기능을 수행하는데 있어서 모두가 root 권한을 사용해도 문제가 없지만, 보안 취약점이 발견되거나 등의 문제가 발생했을 때 피해를 최소한으로 줄이기 위해선 사용자랑 그룹의 권한을 이용해 제어해 줘야 한다.
사용자 : 자원에 접근할 수 있는 주체로 각 사용자는 고유한 ID를 가진다. (UID)

그룹 : 사용자들을 묶어 권한을 공통으로 관리할 수 있다.
사용자와 그룹은 리눅스 시스템에서 밀접한 관계를 가지고 있다.
각 사용자는 하나의 주 그룹(Primary group)에 속하며, 여러 보조 그룹의 멤버가 될 수 있다.
사용자와 그룹을 이용해 필요한 권한을 적합하게 부여해야 안전하게 리눅스를 사용할 수 있다.
사용자
│
├── 시스템 사용자
│ └── root (주 그룹: root)
│
└── 일반 사용자
├── user1
│ ├── 주 그룹: users
│ └── 보조 그룹: docker, audio
│
└── user2
├── 주 그룹: users
└── 보조 그룹: video, ftp, games
그룹
├── 시스템 그룹: root
└── 사용자 그룹: users, docker, audio, video, ftp, games
sudo (Superuser Do): 일반 사용자가 root 권한 또는 다른 계정의 권한으로 명령을 실행할 수 있게 해주는 명령어
-u [사용자명] : 지정한 사용자의 권한으로 명령을 실행한다-i : 대상 사용자의 로그인 셸을 시작한다-s : 셸을 실행하지 않고 지정된 명령만 실행한다.-l : 현재 사용자의 sudo 권한을 나열한다.-E : 현재 사용자의 환경변수를 유지한 채로 sudo 명령을 실행한다.sudo -u newuser whoami : newuser의 권한으로 whoami 명령을 실행sudo -i -u postgres : postgres 사용자의 로그인 셸을 시작sudo -s ls -l /root : root 권한으로 /root 디렉토리의 내용을 나열sudo -l : 현재 사용자의 sudo 권한을 확인
su (Switch User): 다른 사용자 계정으로 전환하는 명령어. 주로 root 계정으로 전환할 때 사용
su
# 또는
su - root
useradd: 새로운 사용자 계정을 생성하는 명령어
sudo useradd [옵션] 사용자명
주요 옵션 :
-m : 사용자의 홈 디렉터리를 생성-s : 사용자의 기본 셸 지정-G : 사용자를 추가 그룹에 포함sudo useradd -m -s /bin/bash -G sudo newuser
# newuser라는 사용자를 추가할건데,
#홈 디렉터리도 생성하고,
#이 사용자는 bash 쉘을 기본으로 사용하고 sudo 라는 그룹에 이 사용자를 조인함
usermod: 기존 사용자 계정의 속성을 수정하는 명령어
sudo usermod [옵션] 사용자명
주요 옵션 :
-l : 사용자의 로그인 이름을 변경-g : 사용자의 기본 그룹을 변경-G : 사용자의 보조 그룹을 변경-a : -G 옵션과 함께 사용하여 기존 그룹 멤버십을 유지하면서 새 그룹 추가userdel: 사용자 계정을 삭제하는 명령어
sudo userdel [옵션] 사용자명
주요 옵션:
-r : 사용자의 홈 디렉터리와 메일 스풀을 함께 삭제-f : 사용자가 로그인 중이거나 실행 중인 프로세스가 있어도 강제로 삭제groupadd: 새로운 그룹을 생성하는 명령어
sudo groupadd [옵션] 그룹명
주요 옵션 :
-g : 그룹의 GID(Group ID)를 지정-r : 시스템 그룹을 생성sudo groupadd -g 1001 developers
# developers라는 그룹을 생성하는데 그 그룹의 GID는 1001로 지정
groupmod: 기존 그룹의 속성을 수정하는 명령어
sudo groupmod [옵션] 그룹명
주요 옵션 :
-n : 그룹의 이름 변경-g : 그룹의 GID 변경groupdel: 그룹을 삭제하는 명령어
sudo groupdel 그룹명
sudo groupdel programmers
리눅스에서 파일과 디렉터리에는 소유자, 그룹, 기타 사용자의 권한을 설정할 수 있다.
ls -l 명령어로 파일 및 디렉터리 권한을 확인할 수 있다.
다음과 같은 출력을 볼 수 있다.

첫번째 부분의 -rw-r--r--는 파일의 권한을 나타낸다.
첫 문자는 파일 유형을, 그 뒤 9개 문자는 소유자, 그룹, 기타 사용자의 읽기(r), 쓰(w)기, 실행 권한(x)을 나타낸다
- : 일반 파일d : 디렉터리l : 심볼릭 링크c : 문자 디바이스 파일b : 블록 디바이스 파일p : 명명된 파이프s : 소켓 파일chmod u+x file.tx <- 소유자에게 실행 권한 추가chmod 644 file.txt <- 소유자 읽기/쓰기 권한부여, 그룹과 기타 읽기만chown user:group file.txt <- 파일의 소유자를 user로, 그룹을 group으로 변경-R 옵션을 사용하여 디렉터리와 그 하위 파일들의 소유권을 재귀적으로 변경할 수 있다.