안녕하세요. 마술피리 자몽 입니다.
이번 포스팅에서는 리눅스 사용자와 그룹 관리에 대해 알아보겠습니다.
리눅스는 시스템에 여러명이 접속해서 사용할 수 있는 다중 시스템을 지원하기 때문에 리눅스 사용자를 관리하는 방법과 그룹을 관리하는 방법을 아는 것이 중요하다고 생각됩니다.
리눅스에서 사용자 관리, 그룹 관리에 필요한 파일에 대해 알아보고, 이를 관리하는 시스템 명령어에 대해 아래와 같이 배워보도록 하겠습니다.
Ⅰ. /etc/passwd, /etc/shadow, /etc/group
Ⅱ. 사용자 관리 명령어 사용 방법
Ⅲ. 그룹 관리 명령어 사용 방법
▷ /etc/passwd
→ 사용자 ID와 패스워드 등 사용자의 시스템 계정 정보를 볼 수 있는 파일로 각 열의 정보는 아래와 같음
→ 사용자 이름 : 패스워드 : 사용자 ID : 그룹 ID : 전체 이름 : 홈 디렉토리 : 기본 쉘
# /etc/passwd 파일 내용 보기
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.
.
.
gnome-initial-setup:x:977:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rngd:x:976:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
magicpipe:x:1000:1000:magicpipe:/home/magicpipe:/bin/bash
vboxadd:x:975:1::/var/run/vboxadd:/bin/false
▷ /etc/shadow
→ 사용자 계정에 대한 암호화된 패스워드를 저장하고 있고, 패스워드 설정 기간, 유효기간 정보를 갖고 있는 파일
→ 사용자 이름 : 패스워드 : 패스워드 최종 수정일 : 패스워드 변경 최소일 : 패스워드 변경 최대일 : 패스워드 만료 경고기간 : 패스워드 파기 기간 : 계정 만료 기간 : 예약 필드
# /etc/group 파일 내용 보기
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
.
.
.
sshd:x:74:
avahi:x:70:
slocate:x:21:
rngd:x:974:
tcpdump:x:72:
magicpipe:x:1000:
vboxsf:x:973:
▷ /etc/group
→ 그룹 목록에 대한 정보를 갖고 있는 파일
→ 그룹 이름 : 패스워드 : 그룹 ID : 그룹에 속한 사용자 이름
# /etc/shadow 파일 내용 보기
[root@localhost ~]# cat /etc/shadow
root:$6$QLNgay3sOp6bWWZm$Lz6c0UUcO68V28M6JYf73PxdEyh52cE1.bO/.88ENxQjOeYFwQ2PaGAmLKuLxEKsm0v7DouEtD/khwUQyJezK/::0:99999:7:::
bin:*:18358:0:99999:7:::
daemon:*:18358:0:99999:7:::
adm:*:18358:0:99999:7:::
lp:*:18358:0:99999:7:::
sync:*:18358:0:99999:7:::
shutdown:*:18358:0:99999:7:::
.
.
.
sshd:!!:18519::::::
avahi:!!:18519::::::
rngd:!!:18519::::::
tcpdump:!!:18519::::::
magicpipe:$6$W4uFmTTf9Tp7LYu3$jGsNHm.1UR0Zd42QdZFgtOFSQc.i/9xaVly5xWhx28KHSCcIvgxSrJT9i3Phe0Q.2igbyH8e/uFgTD1dodUp51::0:99999:7:::
vboxadd:!!:18519::::::
▷ useradd : 새로운 사용자를 추가
# test01 사용자 생성
[root@localhost ~]# useradd test01
# test02 사용자 생성 시 사용자 ID를 1234로 지정
[root@localhost ~]# useradd -u 1234 test02
# test03 사용자 생성 시 tgroup 그룹에 test03 사용자 지정
[root@localhost ~]# useradd -g tgroup test03
# test04 사용자 생성 시 홈 디렉터리를 /test04anotherhome 으로 지정
[root@localhost ~]# useradd -d /test04anotherhome test04
# test05 사용자 생성 시 기본 쉘을 /bin/csh로 지정
[root@localhost ~]# useradd -s /bin/csh test05
# 신규 생성 사용자의 /etc/passwd 파일 확인
[root@localhost ~]# cat /etc/passwd | grep test
test01:x:1001:1001::/home/test01:/bin/bash
test02:x:1234:1234::/home/test02:/bin/bash
test03:x:1235:1235::/home/test03:/bin/bash
test04:x:1236:1236::/test04anotherhome:/bin/bash
test05:x:1237:1237::/home/test05:/bin/csh
# 신규 생성 사용자의 /etc/shadow 파일 확인
[root@localhost ~]# cat /etc/shadow | grep test
test01:!!:18540:0:99999:7:::
test02:!!:18540:0:99999:7:::
test03:!!:18540:0:99999:7:::
test04:!!:18540:0:99999:7:::
test05:!!:18540:0:99999:7:::
# 신규 생성 사용자의 /etc/group 파일 확인
[root@localhost ~]# cat /etc/group | grep -E "test|tgroup"
test01:x:1001:
test02:x:1234:
tgroup:x:1235:
test04:x:1236:
test05:x:1237:
▷ passwd : 사용자의 비밀번호를 지정 또는 변경
# test01 사용자 패스워드 변경
[root@localhost ~]# passwd test01
Changing password for user test01.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
▷ usermod : 사용자의 속성을 변경
# test02 사용자 그룹을 root 그룹으로 변경
[root@localhost ~]# usermod -g root test02
# test02 사용자 그룹 변경 확인
[root@localhost ~]# cat /etc/passwd | grep test
test01:x:1001:1001::/home/test01:/bin/bash
test02:x:1234:0::/home/test02:/bin/bash
test03:x:1235:1235::/home/test03:/bin/bash
test04:x:1236:1236::/test04anotherhome:/bin/bash
test05:x:1237:1237::/home/test05:/bin/csh
▷ userdel : 사용자를 삭제
# test03 사용자 삭제, test03 홈 디렉터리 유지
[root@localhost ~]# userdel test03
# test04 사용자 삭제, test04 홈 디렉터리 삭제
[root@localhost ~]# userdel -r test04
# 사용자 홈디렉터리 삭제 유무 확인
[root@localhost ~]# ls -al /home/
total 4
drwxr-xr-x. 7 root root 79 Oct 5 10:45 .
dr-xr-xr-x. 17 root root 224 Oct 5 11:06 ..
drwx------. 15 magicpipe magicpipe 4096 Sep 25 16:18 magicpipe
drwx------. 3 test01 test01 78 Oct 5 10:41 test01
drwx------. 3 test02 root 78 Oct 5 10:42 test02
drwx------. 3 1235 tgroup 78 Oct 5 10:43 test03
drwx------. 3 test05 test05 78 Oct 5 10:45 test05
▷ chage : 패스워드를 주기적으로 변경 설정
# test05 사용자 암호 변경 설정 확인
[root@localhost ~]# chage -l test05
Last password change : Oct 05, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
# test05 사용자 패스워드 최소 사용 일자 지정 (변경 후 5일 사용)
[root@localhost ~]# chage -m 5 test05
# test05 사용자 패스워드 최대 사용 일자 지정 (변경 후 30일까지 사용)
[root@localhost ~]# chage -M 90 test05
# test05 사용자 패스워드 만료 일자 지정
[root@localhost ~]# chage -E 2020/12/31 test05
# test05 사용자 패스워드 만료 전 알람 설정 (10일로 지정)
[root@localhost ~]# chage -W 10 test05
# test05 사용자 암호 변경 설정 후 확인 내용
[root@localhost ~]# chage -l test05
Last password change : Oct 05, 2020
Password expires : Jan 03, 2021
Password inactive : never
Account expires : Dec 31, 2020
Minimum number of days between password change : 5
Maximum number of days between password change : 90
Number of days of warning before password expires : 10
▷ groups : 사용자가 소속된 그룹 확인
# 현재 사용자가 속한 그룹을 보여줌
[root@localhost ~]# groups
root
# test02 가 속한 그룹을 보여줌
[root@localhost ~]# groups test02
test02 : root
▷ groupadd : 새로운 그룹 추가
# testgroup 생성
[root@localhost ~]# groupadd testgroup
# testgroup01 생성시 그룹 ID를 3333 으로 지정
[root@localhost ~]# groupadd -g 3333 testgroup01
# 생성된 그룹 확인
[root@localhost ~]# cat /etc/group | grep test
test01:x:1001:
test02:x:1234:
test05:x:1237:
testgroup:x:1238:
testgroup01:x:3333:
▷ groupmod : 그룹 속성 변경
# testgroup02 그룹 이름을 testgroup03 으로 변경
[root@localhost ~]# groupmod -n testgroup02 testgroup03
# 그룹 이름 확인
[root@localhost ~]# cat /etc/group | grep testgroup
testgroup:x:1238:
testgroup01:x:3333:
testgroup02:x:3334:
▷ groupdel : 그룹 삭제
# testgroup 그룹 삭제
[root@localhost ~]# groupdel testgroup
# 삭제된 그룹 확인
[root@localhost ~]# cat /etc/group | grep testgroup
testgroup01:x:3333:
testgroup02:x:3334:
▷ gpasswd : 그룹 패스워드 설정
# testgroup02 그룹 암호 지정
[root@localhost ~]# gpasswd testgroup02
Changing the password for group testgroup02
New Password:
Re-enter new password:
# testgroup02 그룹의 관리자를 test05 사용자로 지정
[root@localhost ~]# gpasswd -A test05 testgroup02
# 사용자 test02 를 testgroup02 그룹에 추가
[root@localhost ~]# gpasswd -a test02 testgroup02
Adding user test02 to group testgroup02
# 사용자 test02 를 testgroup02 그룹에서 제거
[root@localhost ~]# gpasswd -d test02 testgroup02
Removing user test02 from group testgroup02
▽ 같이 보면 더 좋은 블로그 글 ▽
[CentOS 8] 심볼릭 링크와 하드 링크 (0) | 2020.10.08 |
---|---|
[CentOS 8] 파일의 허가권과 소유권 (2) | 2020.10.06 |
[CentOS 8] 리눅스 기본 명령어 (0) | 2020.09.28 |
[CentOS 8] 런레벨(Runlevel) 이란 (0) | 2020.09.25 |
[CentOS 8] Disk 관리 | RAID 장애 조치 (0) | 2020.09.05 |
댓글 영역