티스토리 뷰
user관리 파일
Linux의 user 유형에는 3가지가 있습니다.
- root: 전체 관리 권한 user
- service user: Linux시스템관리를 위한 특수한 user
- user : 일반 사용자
/etc/passwd의 내용을 보면 전체 user목록을 볼 수 있습니다.
아래 예에서 root, ocean1을 제외하면 모두 service user들입니다.
각 column은 user name:암호:UID:primary GID:Comments:Home directory:Login shell입니다.
2번째 컬럼 '암호'값이 'x'이면 별도 파일인 /etc/shadow에 암호가 있다는 뜻입니다.
sh-4.4# 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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
ocean1:x:1000:1000::/home/ocean1:/bin/bash
group관리 파일
group은 /etc/group에서 관리됩니다.
각 column은 group name:암호:GID:comments입니다.
sh-4.4# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
utmp:x:22:
utempter:x:35:
dbus:x:81:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
ocean1:x:1000:
user가 존재하는 지 체크
/etc/passwd에서 체크합니다.
sh-4.4# grep ocean1 /etc/passwd
ocean1:x:1000:1000::/home/ocean1:/bin/bash
user전환
su라는 명령을 사용하면 됩니다.
user로 전환하면서 그 user의 home directory에 있는 Login shell을 실행하고 싶으면
su 뒤에 '-'를 붙이십시오.
sh-4.4# su ocean1
[ocean1@557bc45cf6f2 /]$ exit
exit
sh-4.4# su - ocean1
Last login: Wed Jun 3 01:36:40 UTC 2020 on pts/1
[ocean1@557bc45cf6f2 ~]$
user logout
exit를 입력하거나 또는 CTRL-d를 누르십시오.
/etc/sudoers
sudoers파일은 sudo프레임워크의 설정파일로서 sudo 사용 권한자를 등록할 수 있습니다.
sudoers파일은 root권한이나 sudo권한을 가진 user가 수정할 수 있습니다.
'sudo vi /etc/sudoers'로 직접 수정하지 마시고, visudo라는 명령을 사용하십시오.
visudo를 사용하면 동시 수정을 막고 저장 시 syntax체크를 하는 등 안전하게 suders파일을 편집할 수 있습니다.
❯ sudo visudo
Password:
visudo: /etc/sudoers.tmp unchanged
user 추가 및 삭제
useradd명령어를 이용하여 os user를 추가합니다.
자동으로 /home밑에 user 디렉토리도 만들어집니다.
sh-4.4# useradd docker
sh-4.4# id docker
uid=1001(docker) gid=1001(docker) groups=1001(docker)
sh-4.4# ls -al /home
total 16
drwxr-xr-x 1 root root 4096 Jun 3 02:04 .
drwxr-xr-x 1 root root 4096 Jun 2 08:27 ..
drwx------ 2 docker docker 4096 Jun 3 02:04 docker
drwx------ 2 ocean1 ocean1 4096 Jun 2 08:22 ocean1
추가한 user의 암호를 지정합니다.
[root@bastion tmp]# passwd docker
Changing password for user docker.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@bastion tmp]# grep docker /etc/shadow
docker:$6$TZQlCJ4e$nc6GXzDm1TsKrRY62/TY5wPJoKdnvtAJQBepvxgBHFQ..kLC5k2qGPZ5Tez17DTtfJuKRTaAskaGZiWdCqFWi1:18437:0:99999:7:::
[root@bastion tmp]#
생성 시 group, uid, 암호를 지정하려면 아래와 같이 하십시오.
[root@bastion work]# groupadd designer -g 9001
[root@bastion work]# useradd smith -g designer -u 8002 -p redhat
[root@bastion work]# id smith
uid=8002(smith) gid=9001(designer) groups=9001(designer)
[root@bastion work]# useradd john -G designer -u 8001 -p redhat
[root@bastion work]# id john
uid=8001(john) gid=8001(john) groups=8001(john),9001(designer)
user를 삭제해 보겠습니다.
삭제는 userdel명령어를 이용합니다.
주의할 점은 user가 삭제되어도 home디렉토리는 여전히 남아 있다는 겁니다.
sh-4.4# userdel docker
sh-4.4# id docker
id: 'docker': no such user
sh-4.4# ls -li /home
total 8
3428279 drwx------ 2 1001 1001 4096 Jun 3 02:04 docker
3293099 drwx------ 2 ocean1 ocean1 4096 Jun 2 08:22 ocean1
이전 user의 home디렉토리를 지우지 않고 새 user를 추가해 봅시다.
동일한 uid인 '1001'로 생성되었습니다.
이런 경우는 이전 user의 home디렉토리의 owner user와 group도 변경됩니다.
sh-4.4# useradd tmp
sh-4.4# id tmp
uid=1001(tmp) gid=1001(tmp) groups=1001(tmp)
sh-4.4# ls -li /home
total 12
3428279 drwx------ 2 tmp tmp 4096 Jun 3 02:04 docker
3293099 drwx------ 2 ocean1 ocean1 4096 Jun 2 08:22 ocean1
3428284 drwx------ 2 tmp tmp 4096 Jun 3 02:08 tmp
user삭제 시 home directory도 삭제하려면 'userdel -r'을 이용하십시오.
sh-4.4# userdel -r tmp
sh-4.4# ls -li /home
total 8
3428279 drwx------ 2 1001 1001 4096 Jun 3 02:04 docker
3293099 drwx------ 2 ocean1 ocean1 4096 Jun 2 08:22 ocean1
group추가, 수정, 삭제
새로운 group은 groupadd명령으로 추가합니다.
sh-4.4# groupadd group1
sh-4.4# grep group1 /etc/group
group1:x:1001:
groupadd <group명> -g <gid>와 같이 groupid를 지정할 수 있습니다.
user를 그룹에 추가하려면 'usermod -a -G'명령을 이용합니다. user의 supplemetary(보충,추가의)그룹으로 추가됩니다.
sh-4.4# usermod -a -G group1 ocean1
sh-4.4# id ocean1
uid=1000(ocean1) gid=1000(ocean1) groups=1000(ocean1),1001(group1)
usermod -G만 사용하면 supplemetary그룹이 overwrite됩니다.
sh-4.4# id ocean1
uid=1000(ocean1) gid=1001(group1) groups=1001(group1),1002(group2),1003(group3)
sh-4.4# usermod -G group3 ocean1
sh-4.4# id ocean1
uid=1000(ocean1) gid=1001(group1) groups=1001(group1),1003(group3)
아래와 같이 -aG로 여러개의 supplementary그룹을 추가할 수 있습니다.
sh-4.4# usermod -aG group2,group3 ocean1
sh-4.4# id ocean1
uid=1000(ocean1) gid=1001(group1) groups=1001(group1),1002(group2),1003(group3)
user의 primary group을 수정하려면 'usermod -g'명령을 수행합니다.
sh-4.4# id ocean1
uid=1000(ocean1) gid=1000(ocean1) groups=1000(ocean1),1001(group1)
sh-4.4# usermod -g group1 ocean1
sh-4.4# id ocean1
uid=1000(ocean1) gid=1001(group1) groups=1001(group1)
user가 속한 모든 group목록을 보려면 groups명령을 이용하십시오.
sh-4.4# groups ocean1
ocean1 : ocean1 group1
사용자 암호 설정
사용자 암호는 /etc/passwd파일로 관리되지 않습니다.
아래와 같이 2번째 컬럼에 'x'로 되어 있다는것은 이 파일에서 암호를 관리하지 않는다는 의미입니다.
sh-4.4# grep ocean1 /etc/passwd
ocean1:x:1000:1001::/home/ocean1:/bin/bash
사용자 암호에 대한 설정은 /etc/shadow파일에 있습니다.
암호 변경은 'usermod -p'명령을 이용합니다. 'passwd '명령도 가능합니다.
sh-4.4# usermod -p passw0rd1 ocean1
sh-4.4# grep ocean1 /etc/shadow
ocean1:passw0rd1:18416:1:26:4:3:18418:
암호에 대한 각종 설정은 'chage' 명령을 이용합니다.
각 컬럼의 의미는 아래와 같습니다.
# | 설명 | 예 |
---|---|---|
1 | user id | ocean1 |
2 | 사용자암호 | 생략 |
3 | 생성일(1970-01-01이후 일수) | 18415 |
4 | 암호변경 후 며칠 후부터 암호변경이 가능한가? | 1 |
5 | 암호 변경 후 며칠까지 암호를 변경해야 하는가? | 26 |
6 | 암호 만료일 며칠 전부터 warning할것인가? | 4 |
7 | 암호 만료일 며칠 후 계정을 완전 expire할것인가? | 3 |
8 | 계정 폐기일(1970-01-01이후 일수) | 18418 |
아래 예는 아래와 같은 의미입니다.
- 암호변경 후 1일부터 암호를 다시 변경할 수 있고, 26일 후 까지는 반드시 변경해야 한다.
- 암호만료일 4일 전부터 warning할것이고, 암호만료일 3일 후까지 암호를 변경 안하면 계정을 만료 시킬것이다.
- 이 계정은 2020-06-05일에는 최종 폐기될것이다.
sh-4.4# chage -m 1 -M 26 -W 4 -I 3 -E 2020-06-05 ocean1
sh-4.4# grep ocean1 /etc/shadow
ocean1:!!:18415:1:26:4:3:18418:
'chage -l'명령으로 설정 값을 보다 보기 좋게 볼 수 있습니다.
sh-4.4# chage -l ocean1
Last password change : Jun 02, 2020
Password expires : Jun 28, 2020
Password inactive : Jul 01, 2020
Account expires : Jun 05, 2020
Minimum number of days between password change : 1
Maximum number of days between password change : 26
Number of days of warning before password expires : 4
사용자 계정 lock / unlock
usermod -L 과 -U를 사용합니다.
Locking되었을 때는 사용자 암호값 앞에 '!'가 붙습니다.
sh-4.4# usermod -L ocean1
sh-4.4# id ocean1
uid=1000(ocean1) gid=1001(group1) groups=1001(group1),1002(group2),1003(group3)
sh-4.4# grep ocean1 /etc/shadow
ocean1:!passw0rd:18416:1:26:4:3:18418:
sh-4.4# usermod -U ocean1
sh-4.4# grep ocean1 /etc/shadow
ocean1:passw0rd:18416:1:26:4:3:18418:
사용자 계정/암호 정책 설정
기본적인 계정 및 암호 정책 설정은 /etc/login.defs파일에서 합니다.
sh-4.4# cat /etc/login.defs | grep ^[^#]
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
사용자 홈 디렉토리 변경
아래 예제는 user01의 홈디렉토리를 /users/user01로 변경하는 것입니다.
기본적으로 사용자의 홈디렉토리는 /home/{username} 입니다.
usermod -d /users/user01 user01
'Infrastructure > OS' 카테고리의 다른 글
Red Hat System Administration I: Linux processes (0) | 2020.06.04 |
---|---|
Red Hat System Administration I: 파일 권한 제어 (0) | 2020.06.03 |
Red Hat System Administration I: 환경변수 이용하기 (0) | 2020.06.02 |
Red Hat System Administration I: CRUD for text files (0) | 2020.06.02 |
Red Hat System Administration I: 파일 & 디렉토리 (0) | 2020.06.02 |
- Total
- Today
- Yesterday
- CQRS
- 호모프롬프트
- 스포티파이
- 육각형인간
- 요즘남편 없던아빠
- 리퀴드폴리탄
- 돌봄경제
- SAGA
- 애자일
- 마이크로서비스
- 버라이어티가격
- 도파밍
- 분초사회
- agile
- micro service
- spotify
- API Composition
- 스핀프로젝트
- 디토소비
- AXON
- 마이크로서비스 패턴
- Event Sourcing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |