리눅스 사용자 종류
크게 root 계정, 사용자 계정, 시스템 계정 3가지로 분류된다.
root 계정 : 시스템에 대한 모든 권한을 가지는 특수 사용자
사용자 계정 : 일반 리눅스 사용자
시스템 계정 : 기본적으로 생성되며, 계정별 역할이 부여되어 제한적 권한을 가지는 시스템 사용자
Root 계정 관리
슈퍼 유저 (Super user) 라고도 불리우며, 제한 없이 모든 명령어들을 사용할 수 있다.
1) root 계정 전환
일반 사용자 계정에서 su 명령어를 통해, root 계정으로 전환할 수 있다. 단, 현재 위치는 이전 일반 사용자의 홈 디렉토리로 그대로 유지된다. (su - 명령어는 root 사용자의 환경변수도 함께 로드)
사용자 계정에서 root 계정으로 전환했지만, 현재 작업 중인 위치는 사용자의 홈 디렉토리 위치 그대로인 것을 확인할 수 있다.
2) root 권한 사용
일반 사용자 계정에서 root 사용자의 권한으로 명령어를 실행하고자 하는 경우, sudo 명령을 통해 일시적으로 root 권한을 사용한다.
일반 사용자 권한으로는 /etc/passwd 파일을 읽기 전용으로만 열람할 수 있다.
하지만, sudo 명령을 통해 한시적으로 root 권한을 얻어 /etc/passwd 파일을 열람하면 수정 및 저장이 가능한 것을 확인할 수 있다.
3) root 권한 지정
root 사용자의 UID 값은 0 이다. 따라서, 일반 사용자의 UID 를 0 으로 변경하는 경우 root 권한을 획득하게 된다.
시스템 계정 관리
메일 관리, SSH 등 특정 서비스에 대한 권한을 가지는 계정이다. UID 가 1 ~ 499 범위에 있는 계정들이 이에 해당한다.
0 ~ 99 번 : 기본으로 설정되는 시스템 계정
100 ~ 400 번 : 관리자에 의해 추가 운용되는 시스템 계정 (레드햇 계열)
100 ~ 999 번 : 관리자에 의해 추가 운용되는 시스템 계정 (데비안 계열)
단, 배포판 별로 상이할 수 있다.
사용자 계정 관리
일반 사용자 생성 시 생성되는 계정으로, 속해있는 그룹 단위로 권한 설정 및 프로세스 관리 수행이 가능하다.
/etc/login.defs 파일을 통해, 일반 사용자의 UID 및 GID 범위를 확인할 수 있다.
사용자 계정 생성
useradd 명령 또는 adduser 명령어를 통해 사용자 계정을 생성한다.
1) -D 옵션
사용자 계정 생성 기본 옵션들의 내용 열람 및 수정을 위한 옵션이다.
/etc/default/useradd 파일의 내용과 일치하며, 사용자 계정 생성 시 참조할 기본 설정들의 내용을 열람할 수 있다.
타 옵션들과 조합하여 함께 사용하면, /etc/default/useradd 파일의 내용을 변경할 수 있다.
2) -b 옵션
-D 옵션과 함께 사용하며, /etc/default/useradd 파일의 기본 홈 디렉토리 경로를 설정한다.
3) -d 옵션
사용자의 홈 디렉토리를 지정한다. 단, 홈 디렉토리의 경로는 미리 생성되어있어야 하며 사용자 계정명까지 경로로 지정해주어야 한다. 사용자 계정명을 경로에서 생략하는 경우, SKEL 복사는 이루어지지 않으며 계정 접속만 가능하다.
test1 계정의 홈 디렉토리가 -d 옵션으로 지정한 경로로 설정된 것을 확인할 수 있다.
계정명을 홈 디렉토리 경로에서 생략하여, SKEL 디렉토리가 복사되지 않은 것을 확인할 수 있다.
4) -c 옵션
사용자 계정의 별칭을 설정한다. GUI 모드로 접속 시, 계정 목록에 해당 별칭으로 나타나게 된다. 단, 해당 계정에 암호를 설정해야한다.
test1 계정의 별칭을 hello 로 설정하였으며, 암호를 부여했다.
암호를 설정하게 되면, 로그인 가능한 계정 목록에 별칭으로 나타나게 되는 것을 확인할 수 있다.
5) -u 옵션
사용자의 User ID 를 부여한다. 지정하지 않을 경우, /etc/login.defs 파일의 내용에 따라 1000번부터 순차적으로 지정한다. -u 옵션으로 UID 를 지정한 경우, 다음 생성될 사용자의 UID 는 해당 번호의 다음 번호부터 순차적으로 부여된다.
test1 계정의 UID 를 1300 으로 지정하여 생성한다.
다음으로 생성되는 test2 계정의 UID 는 1300 의 다음 번호인 1301 번으로 부여되는 것을 확인할 수 있다.
6) -g 옵션
사용자 계정이 속하게 될 그룹을 지정한다. 단, 그룹은 사전에 생성되어있어야 한다. 계정 생성 시에 그룹을 지정하지 않는다면, GID 는 UID 와 동일한 값으로 설정된다.
test1 계정이 group1 그룹에 포함된 것을 확인할 수 있다. 별도로 그룹을 지정하지 않았기에 UID 와 GID 가 동일한 것을 확인할 수 있다.
test2 계정은 GID 가 1200 으로 설정된 group2 에 포함된 것을 확인할 수 있다.
7) -G 옵션
사용자가 가입할 2차 그룹을 지정한다.
test2 계정의 주 그룹이외에, 추가로 2차 그룹인 group2 에 가입된 것을 확인할 수 있다. 여전히 주 그룹은 변함없기에 GID 값은 변동이 없다.
8) -e 옵션
YYYY-MM-DD 형식으로 사용자 계정의 만료일을 설정한다. 별도로 설정하지 않는다면, /etc/default/useradd 파일의 EXPIRE 필드의 값을 따른다.
test1 사용자 계정의 만료일을 2025년 09월 12일로 설정한 후 chage 명령을 통해 확인해보면, 계정 만료일이 지정한 날짜로 설정된 것을 확인할 수 있다.
9) -f 옵션
패스워드 만료일 기준으로 유효 기간을 설정한다. 만료전까지, 경고 메시지를 보낼 날짜 수를 나타낸다. 유효 기간을 지정하지 않는다면, /etc/default/useradd 파일의 INACTIVE 필드의 값을 따른다.
유효 기간을 7일로 설정하여, 만료 7일전부터 만료 경고 메시지를 보내게 되었음을 확인할 수 있다.
10) -s 옵션
사용자의 로그인 쉘을 지정한다.
useradd -D 명령을 통해 살펴본, 현재 기본 설정된 로그인 쉘은 bash 쉘이다.
로그인 쉘이 본쉘로 설정되어 생성된 test1 계정으로 접속하게 되면, 로그인 쉘이 변경된 것을 확인할 수 있다.
11) -m 옵션
홈 디렉토리를 지정할 때 사용하며, 디렉토리가 없는 경우 생성한다.
12) -k 옵션
기본 뼈대가 될 파일의 목록들을 담고 있는 SKEL 디렉토리의 경로를 지정한다. 별도로 지정하지 않는다면, /etc/skel 파일을 참조한다.
13) -mk 옵션
1회성으로 SKEL 디렉토리의 경로를 지정한다. 배포해야할 기본 파일이 있을 경우, 유용하게 사용된다.
SKEL 디렉토리의 복사를 확인하기 위해, hello 라는 내용이 담긴 파일을 SKEL 경로가 될 /sk 디렉토리에 생성한다.
/sk 디렉토리를 SKEL 경로로 설정하여 해당 디렉토리 하위의 1번 파일까지 복사된 것을 확인할 수 있다.
사용자 계정 설정 변경
usermod 명령어를 통해 사용자 계정의 정보를 변경한다.
1) -d 옵션
사용자의 홈 디렉토리를 변경한다. 단, 홈 디렉토리의 경로는 미리 생성되어있어야 하며 사용자 계정명까지 경로로 지정해주어야 한다. 사용자 계정명을 경로에서 생략하는 경우, SKEL 복사는 이루어지지 않으며 계정 접속만 가능하다.
*주의할 점*
-d 옵션은 /etc/passwd 파일 상의 홈 디렉토리 경로만 변경되며 실제 홈 디렉토리가 변경되지는 않는다.
2) -m 옵션
실제 사용자의 홈 디렉토리 위치를 변경한다. 디렉토리가 없는 경우 생성하며, 기존 홈 디렉토리 하위의 내용까지 복사한다.
mod 사용자 계정의 현재 홈 디렉토리는 /home/mod 이며, -d 옵션을 통해 /etc/passwd 파일 상의 홈 디렉토리 경로를 /home/backup 으로 변경하였다. 하지만, 여전히 mod 사용자 계정의 홈 디렉토리는 /home/mod 이므로 -md 옵션을 사용하게 되는 경우 문제가 발생하게 된다.
하지만, 여전히 mod 사용자 계정의 홈 디렉토리는 /home/mod 이므로 -md 옵션을 사용하게 되는 경우 불일치 문제가 발생하게 된다.
따라서, /etc/passwd 파일 상의 홈 디렉토리 경로와 실제 홈 디렉토리의 경로를 먼저 일치시켜주어야 한다.
실제 홈 디렉토리와 /etc/passwd 파일 상의 경로가 일치해야 정상적으로 홈 디렉토리가 변경되는 것을 확인할 수 있다.
사용자 계정 삭제
userdel 명령어를 통해 사용자 계정을 삭제한다.
1) 옵션 미 사용
사용자 계정을 삭제하지만, 관련 파일들과 홈 디렉토리는 그대로 존재한다.
별도의 옵션을 지정하지 않고 계정을 삭제하면, 관련 파일과 홈 디렉토리는 삭제되지 않음을 확인할 수 있다.
2) -r 옵션
사용자 계정 포함, 관련 파일과 홈 디렉토리를 모두 함께 삭제한다.
사용자 계정과 홈 디렉토리, 메일 파일까지 함께 삭제된 것을 확인할 수 있다.
3) -f 옵션
사용자가 로그인 중이더라도, 강제로 삭제한다.
계정 암호 설정
passwd 명령어를 통해 계정 암호를 설정한다. 사용자를 생성한 후, 암호를 설정하기 전까지는 해당 계정으로 로그인할 수 없으므로 계정 암호를 설정해주어야 한다.
1) 옵션 미 사용
지정한 계정의 암호를 설정한다. 계정을 지정하지 않으면, 현재 로그인된 사용자의 암호를 설정한다.
인자를 지정하지 않았을 경우에는, 현재 로그인된 계정인 root 의 암호를 변경하는 것을 확인할 수 있다.
2) -S 옵션
사용자 계정의 암호 설정 정보들을 열람할 수 있다.
test1 계정의 정보들을 확인할 수 있다.
3) -e 옵션
사용자 암호를 만료시키는 옵션으로, 다음 접속 시 암호를 변경해주어야 한다.
test1 계정의 암호를 만료시켜보자.
test1 계정으로 로그인 하게 되면, 사용자 암호를 변경하도록 하는 것을 확인할 수 있다.
3) -d 옵션
사용자 계정에 설정된 암호를 삭제한다.
계정의 암호 정보가 정상적으로 삭제된 것을 확인할 수 있다.
4) -l 옵션
계정 암호에 LOCK 을 걸어, 로그인을 제한한다. -u 옵션을 사용하기 전까지 로그인할 수 없다.
test1 계정 암호에 LOCK 을 걸어 해당 암호로 로그인이 거부되는 것을 확인할 수 있다.
5) -u 옵션
LOCK 이 걸린 계정의 암호를 UNLOCK 한다.
LOCK 이 걸려있던 test1 계정의 암호를 UNLOCK 하면, 정상적으로 로그인이 가능한 것을 확인할 수 있다.
6) -w 옵션
암호 만료 전 경고 메시지를 출력할 날짜 수를 지정한다.
7) -x 옵션
암호의 최대 사용 기간을 설정한다.
8) -n 옵션
암호 변경 후, 최소 유지 일 수를 지정한다. 0 으로 지정하는 경우에는 언제든지 암호 변경이 가능하다.
9) -i 옵션
사용자 암호가 만료된 이후, 계정 비활성화까지의 유예 기간을 설정한다.
- 암호 변경 가능 최소 대기 일 수 : 7 일
- 암호 사용 최대 기간 : 365 일
- 만료 전 경고일 : 7 일
- 암호 만료 후, 계정 비활성화까지의 유예 기간 : 10 일
test1 계정의 암호 정보가 정상적으로 수정된 것을 확인할 수 있다.
계정 암호 관리
chage 명령어를 통해 사용자의 패스워드 만료 정보를 설정한다.
1) -l 옵션
계정의 암호 만료 정보들을 출력한다.
test1 계정의 암호 만료 관련 정보들이 출력되는 것을 확인할 수 있다.
2) -d 옵션
계정의 마지막 암호 설정 날짜를 수정한다.
test1 계정의 마지막 암호 변경일을 2025-01-11 로 변경하였음을 확인할 수 있다.
3) -E 옵션
계정이 만료되는 날짜를 설정한다.
4) -m 옵션
계정 암호 변경이 가능한 최소 대기 일 수를 설정한다.
5) -M 옵션
계정 암호를 사용할 수 있는 최대 기간을 설정한다.
6) -W 옵션
계정 암호의 만료 전까지, 경고 메시지를 보낼 날짜 수를 지정한다.
7) -I 옵션
계정 암호가 만료된 후, 비활성화까지의 유예 기간을 설정한다.
현재 test1 계정의 암호 만료 정보는 다음과 같다.
- 암호 변경 최소 대기 일 수 : 3 일
- 암호 최대 사용 기간 : 365 일
- 암호 만료 전, 경고 메시지 안내 일 수 : 5 일
- 암호 만료 후 비활성화까지 유예 기간 : 3일
test1 계정의 암호 만료 정보가 정상적으로 수정된 것을 확인할 수 있다.
그룹 생성
groupadd 명령어를 통해 그룹을 생성한다. 사용자를 그룹화하여 그룹별 권한을 부여하며, 모든 사용자는 UID 와 GID 를 가지게 된다.
1) -g 옵션
그룹 생성 시, GID 값을 지정한다. 지정하지 않을 경우, /etc/login.defs 파일의 내용에 따라 1000번부터 순차적으로 지정한다. -g 옵션으로 GID 를 지정한 경우, 다음 생성될 그룹의 GID 는 해당 번호의 다음 번호부터 순차적으로 부여된다.
g1 그룹은 GID 를 부여하지 않았으므로 기본 최소 값인 1000번을 부여받았고, g2 그룹은 1221 번의 GID 로 설정되었으며 g3 그룹은 g2 그룹의 다음 번호인 1222 번을 부여받았음을 확인할 수 있다.
그룹 정보 변경
groupmod 명령어를 통해, 그룹 관련 설정 파일인 /etc/passwd, /etc/group, /etc/gshadow 파일의 속성을 변경한다.
1) -n 옵션
그룹의 새 이름을 설정한다.
2) -g 옵션
그룹의 GID 를 변경한다.
gtest 그룹의 이름을 g1 으로 변경하고, GID 를 1300 으로 변경한 것을 확인할 수 있다.
그룹 삭제
groupdel 명령어를 통해 지정한 그룹을 삭제한다. 단, 주그룹에 가입된 사용자가 없어야 하며 그룹 권한이 설정된 파일이 없어야 한다.
/etc/group 파일을 통해 확인한, 현재 생성되어있는 그룹의 목록은 다음과 같다.
groupdel 명령어를 통해 그룹이 정상적으로 삭제되었음을 확인할 수 있다.
또한 현재 삭제하고자 하는 그룹에 사용자가 속해있다면, 가입된 사용자를 삭제한 후에 그룹 삭제가 가능함을 확인할 수 있다.
그룹 암호 설정
gpasswd 명령을 통해 그룹의 암호를 관리한다. /etc/group, /etc/gshadow 파일에 관련 내용이 저장되어 있다.
1) 옵션 미사용
그룹의 암호를 설정한다.
gtest 그룹에서 사용할 암호를 설정하였고, /etc/gshadow 파일에 해시로 암호화되어 저장된 것을 확인할 수 있다.
2) -r 옵션
그룹에서 사용하는 암호를 삭제한다.
해쉬 함수로 암호화되어 저장되었던 gtest 그룹의 암호가 삭제된 것을 확인할 수 있다.
3) -a 옵션
그룹에 속할 사용자를 추가한다.
gtest 그룹에 test1 사용자를 멤버로 추가한 것을 확인할 수 있다.
4) -d 옵션
그룹에 속해있는 사용자를 삭제한다.
test1 사용자가 gtest 그룹의 멤버 목록에서 사라진 것을 확인할 수 있다.
그룹 가입
newgrp 명령어를 통해, 현재 로그인되어있는 세션의 GID 를 전환한다. 별도의 지정이 없다면, /etc/passwd 파일에 명시된 그룹으로 변경한다.
단, 그룹에 속하지 않은 사용자가 해당 명령을 사용하는 경우에는 그룹의 암호를 요구한다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)
'OS > Rocky' 카테고리의 다른 글
[Linux / Rocky] FTP 로 파일 권한 확인 (0) | 2025.01.13 |
---|---|
[Linux / Rocky] 파일 및 디렉토리의 허가권 & 소유권 (0) | 2025.01.13 |
[Linux / Rocky] 사용자 환경 설정 파일 (0) | 2025.01.09 |
[Linux / Rocky] vi 에디터 사용 예제 (0) | 2024.12.30 |
[Linux / Rocky] 리눅스 vi 에디터 사용법 (2) (0) | 2024.12.30 |