사용자 생성
useradd [option] user-name
- 사용자가 생성되면 /etc/passwd 파일과 /etc/shadow 파일 가장 마지막에 사용자 정보가 추가됌.
[root@centos7 ~]# useradd king
[root@centos7 ~]# tail -1 /etc/passwd
king:x:20004:20004::/home//king:/bin/bash
[root@centos7 ~]# tail -1 /etc/shadow
king:!!:18765:0:99999:7::18992:
- 사용자 생성된 후 /etc/shadow 파일에서 생성된 사용자의 해시 패스워드 필드가 "!!" 인 것을 확인할 수 있음.
- 새로 생성된 사용자는 패스워드가 설정되지 않기 때문
- 따라서, 이 사용자로 로그인하기 위해선 패스워드를 지정해야 함.
[root@centos7 ~]# passwd king
Changing password for user king.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@centos7 ~]# tail -1 /etc/shadow
king:$6$zJ2jCrvT$8JavZmnxZccg9f9J188e6qr8q07g4lAWMdnznrCD2YQcznOaJ1bX.Azg/Xul7YemYqjbA.eSW6S1YTbl1TJEw0:18765:0:99999:7::18992:
passwd 명령을 사용해서 사용자 "king"의 패스워드를 설정
패스워드를 설정한 후 /etc/shadow 파일의 해시 패스워드 필드에서 사용자의 패스워드가 변경된 것을 확인할 수 있음.
대부분의 리눅스에서는 사용자를 생성하면 기본 그룹과 사용자의 홈 디렉토리 그리고 기본 쉘 등이 자동으로 지정
이와 같은 기본 설정을 확인하려면 useradd 명령의 "-D" 옵션을 사용
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home/
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
이 때 출력되는 값은 /etc/default/useradd 파일에 명시되어 있음.
해당 파일의 내용은 다음과 같음.
[root@centos7 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home/
INACTIVE=-1
EXPIRE=2021-12-31
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
사용자 생성 시 기본 값을 변경하려면 기본 설정을 의미하는 "-D" 옵션과 함께 별도의 옵션을 다시 사용해야 함.
useradd -D [option] [argument]
옵션 | 설명 |
---|---|
-b 디렉토리 | 사용자 생성 시 기본 홈 디렉토리를 설정 |
-e 만기일 | 사용자 생성 시 /etc/shadow 파일의 EXPIRE 필드 값을 지정(사용자 계정 만료일) |
-f 기간 | 사용자 생성 시 /etc/shadow 파일의 INACTIVE 필드 값을 지정(패스워드 만료 후 유예기간) |
-g GID | 사용자 생성 시 기본 그룹의 GID를 지정 |
-s 쉘 | 사용자의 기본 쉘을 지정 |
기본 홈 디렉토리 정보를 변경하면 이후 생성되는 모든 사용자의 홈 디렉토리는 지정된 디렉토리를 기준으로 생성.
홈 디렉토리 설정을 변경하기 위하여 아래와 같이 실행.
[root@centos7 ~]# mkdir /home/guest
[root@centos7 ~]# useradd -D -b /home/guest
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home/guest
INACTIVE=-1
EXPIRE=2021-12-31
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@centos7 ~]# useradd slave
[root@centos7 ~]# tail -1 /etc/passwd
slave:x:20005:20005::/home/guest/slave:/bin/bash
기본 옵션
옵션 | 설명 |
---|---|
-b 디렉토리 | 사용자 생성 시 기본 홈 디렉토리를 설정 |
-e 만기일 | 사용자 생성 시 /etc/shadow 파일의 EXPIRE 필드 값을 지정(사용자 계정 만료일) |
-f 기간 | 사용자 생성 시 /etc/shadow 파일의 INACTIVE 필드 값을 지정(패스워드 만료 후 유예기간) |
-g GID | 사용자 생성 시 기본 그룹의 GID를 지정 |
-s 쉘 | 사용자의 기본 쉘을 지정 |
-u UID | 사용자의 UID를 지정 |
-U | 사용자를 생성할 때 사용자와 같은 이름의 그룹을 생성 |
-g GID | 사용자의 기본 그룹을 지정 |
-G GID | 사용자의 보조 그룹을 지정 |
-m | 사용자의 홈 디렉토리가 존재하지 않는 경우 생성해줌, /etc/login.defs 파일의 CREATE_HOME 항목에 yes로 설정되어 있지 않고, 이 옵션을 사용하지 않을 경우 홈 디렉토리를 생성하지 않음, 둘 중 하나라도 만족할 경우 홈 디렉토리를 생성 |
-c 주석 | 사용자에 대한 GECOS(주석,설명)를 지정 |
-o | 사용자를 생성할 때 UID의 중복을 허용 |
-r | UID가 199부터 999인 시스템 계정을 만들 때 사용 |
-p 패스워드 | 사용자를 생성할 때 패스워드를 지정, 현재는 사용하지 않는 옵션 |
다음은 사용자 환경설정을 테스트하기 위한 사용자 정보
속성 | 값 |
---|---|
사용자 이름 | general |
UID | 2021 |
기본 기룹 | 10(wheel) |
홈 디렉토리 | /home/guest/general |
기본 쉘 | /bin/sh |
[root@centos7 ~]# useradd -u 2021 -g 10 -m -d /home/guest/general -s /bin/sh general
[root@centos7 ~]# tail -1 /etc/passwd
general:x:2021:10::/home/guest/general:/bin/sh
사용자 정보 수정
usermod [option] user-name
사용자의 정보 중 보조그룹을 수정할 때에는 주의해야 할 점이 있음.
'-G' 옵션은 사용자의 보조그룹을 변경하는 옵션.
만약 사용자의 보조 그룹을 2개 이상 지정하려면 '-a'옵션과 함께 사용해야 함.
그렇지 않으면 기존에 등록했던 보조 그룹이 제거됌.
id 명령에서 groups 항목을 확인하면 사용자가 속한 모든 그룹을 확인할 수 있음.
[root@centos7 ~]# id slave
uid=20005(slave) gid=20005(slave) groups=20005(slave)
[root@centos7 ~]# usermod -G wheel slave
[root@centos7 ~]# id slave
uid=20005(slave) gid=20005(slave) groups=20005(slave),10(wheel)
[root@centos7 ~]# usermod -G king slave
[root@centos7 ~]# id slave
uid=20005(slave) gid=20005(slave) groups=20005(slave),20004(king)
[root@centos7 ~]# usermod -aG wheel slave
[root@centos7 ~]# id slave
uid=20005(slave) gid=20005(slave) groups=20005(slave),10(wheel),20004(king)
사용자 삭제
userdel [option] user-name
사용자를 삭제할 때는 "-r" 옵션을 함께 사용하는 것을 권장
'-r' 옵션을 사용하지 않으면 삭제된 사용자의 홈 디렉토리가 남게 되고, 남아 있는 홈 디렉토리와 파일은 삭제된 사용자와 같은 UID로 새로 생성된 사용자가 소유할 수 있어 보안상 문제를 발생시킬 수도 있음.
[root@centos7 ~]# useradd user02
[root@centos7 ~]# ls -l /home/
total 0
drwx------. 5 user user 128 May 19 16:07 user
drwx------. 3 user01 user01 78 May 19 16:20 user01
drwx------. 3 user02 user02 78 May 19 16:20 user02
[root@centos7 ~]# userdel user02
[root@centos7 ~]# ls -l /home/
total 0
drwx------. 5 user user 128 May 19 16:07 user
drwx------. 3 user01 user01 78 May 19 16:20 user01
drwx------. 3 1002 1002 78 May 19 16:20 user02
[root@centos7 ~]# useradd user03
[root@centos7 ~]# ls -l /home/
total 0
drwx------. 5 user user 128 May 19 16:07 user
drwx------. 3 user01 user01 78 May 19 16:20 user01
drwx------. 3 user03 user03 78 May 19 16:20 user02
drwx------. 3 user03 user03 78 May 19 16:25 user03
[root@centos7 ~]# userdel -r user03
[root@centos7 ~]# ls -l /home/
total 0
drwx------. 5 user user 128 May 19 16:07 user
drwx------. 3 user01 user01 78 May 19 16:20 user01
drwx------. 3 1002 1002 78 May 19 16:20 user02
그룹 생성
groupadd [option] group-name
[root@centos7 ~]# groupadd -g 2000 group01
[root@centos7 ~]# grep "group01" /etc/group
group01:x:2000:
[root@centos7 ~]# groupadd -r group02
[root@centos7 ~]# grep "group02" /etc/group
group02:x:982:
그룹 정보 수정
groupmod [option] group-name
[root@centos7 ~]# grep "group01" /etc/group
group01:x:2000:
[root@centos7 ~]# groupmod -g 3000 group01
[root@centos7 ~]# grep "group01" /etc/group
group01:x:3000:
[root@centos7 ~]# groupmod -n group03 group01
[root@centos7 ~]# grep "group03" /etc/group
group03:x:3000:
그룹 삭제
groupdel group-name
[root@centos7 ~]# grep "group03" /etc/group
group03:x:3000:
[root@centos7 ~]# groupdel group03
[root@centos7 ~]# grep "group03" /etc/group
[root@centos7 ~]#
사용자 및 그룹 관리 파일
/etc/skel
/etc/skel 디렉토리는 뼈대(skeleton)라는 의미로 사용자에 대한 기본적인 초기화 파일들을 저장하고 있는 디렉토리.
사용자를 생성할 때 /etc/skel 디렉토리 내의 모든 파일들이 해당 사용자의 홈 디렉토리로 복사됌.
/etc/login.defs
/etc/login.defs파일은 사용자나 그룹을 생성할 때 참고하는 기본 값들이 저장되어 있음
[root@centos7 ~]# cat /etc/login.defs
#사용자 메일박스의 위치 설정
#리눅스에서는 오류 메시지 등을 메일박스로 전송
MAIL_DIR /var/spool/mail
#패스워드 에이징 설정
#패스워드의 최대 사용 기간
#패스워드의 최소 사용 기간
#최소 길이
#경고 값
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#사용자 생성 시 부여되는 UID 값 설정
#시스템 사용자 UID 범위는 201~999
#1~200까지는 시스템에서 고정적으로 가지고 있는 UID이기 때문에 사용할 수 없음
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
#그룹 생성 시 부여되는 GID 값 설정
#시스템 그룹의 GID 범위는 201~999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
#사용자 생성 시 홈 디렉토리 생성 여부 결정
#해당 값이 "yes"라면 useradd 명령 사용 시 "-m" 옵션을 사용하지 않아도 홈 디렉토리 자동 생성
CREATE_HOME yes
#홈 디렉토리 생성에 관계된 umask 값 설정
#사용자를 생성할 경우 해당 umask의 영향을 받아 사용자의 홈 디렉토리가 생성
UMASK 077
#사용자 생성 시 UPG 스키마 사용여부
#사용자를 생성할 때 같은 이름의 그룹을 생성하는 것을 UFG 스키마라고 함
#"yes" : 사용자 생성 시 사용자 이름과 같은 그룹이 생성되고 기본그룹으로 설정
#"no" : 사용자 생성 시 /etc/default/useradd 에 명시된 GROUP으로 기본 그룹이 설정
USERGROUPS_ENAB yes
#패스워드 설정 시 해시 알고리즘 설정
#DES, MD5, Blowfish, SHA-256, SHA-512 설정 가능
ENCRYPT_METHOD SHA512
'RHCSA 준비 > 01. 사용자 및 그룹 관리' 카테고리의 다른 글
1.4 사용자 패스워드 속성 (chage) (0) | 2021.05.19 |
---|---|
1.3 사용자 전환 (su, sudo) (0) | 2021.05.19 |
1.1 사용자 및 그룹 정보 파일 (/etc/passwd , /etc/shadow, /etc/group, /etc/gshadow) (0) | 2021.05.18 |