새소식

인기 검색어

Linux

5/10 사용자 및 그룹 관리

  • -

 

 

저번주 가상머신 네트워크 :

NAT : 외부0, HOST X, GUEST X

VM1 ----- NAT AD-----> HOST ----->

VM2 ----- NAT AD----->|

VM3 ----- NAT AD----->|

NAT NETWORK : 외부0 HOST X, GUEST 0

VM1 ----- NAT AD-----> HOST ----->

VM2 -------|

VM3 -------|

BRIDGE : 외부 0, GUEST 0, HOST 0

HOST ------------공유기

VM1 ---------|

VM2 ---------|

VM3 ---------|

HOST-ONLY : 외부 X, GUEST 0, HOST 0

VM1 <--- --> HOST AD <-----> HOST

VM2 <--------->|

VM3 <--------->| FIND

 

명령어 다시 해야됨. sudo systemctl set-default multi-user.target dkagh1.

 

access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/

 

Product Documentation for Red Hat Enterprise Linux 7 - Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com

*사용자는 시스템에서 계정(UID)를 할당 받아 로그인 가능

리눅스의 모든 파일 및 디렉토리는 특정사용자에 의해 소유됨

모든 프로세스는 특정사용자에 의해서 실행됨

 

*사용자 확인 명령어

ps au 프로세스를 사용중인 사용자 확인 가능

ls -l 파일 및 디렉토리의 소유자 확인 가능

id

 

사용자 정보는 /etc/passwd/에 저장

 

*그룹이란?

사용자와 마찬가지로 이름과 번호(GID)가 있음. /etc/group/파일에 정보저장

- 기본그룹

사용자는 무조건 하나의 기본그룹을 소유하고있음(사용자 생성시 자동생성)

기본그룹은 /etc/passwd 파일의 네번째 필드 GID로 식별

사용자가 파일을 생성하면 해당파일의 소유그룹이 됨

 

*보조그룹

반드시 속해있지않아도 ㄱㅊ

사용자 파일에 대한 권한을 확인하는데 사용됨

/etc/group/ 파일의 마지막 필드에 보조그룹 구성원 표시(쉽표로 구분)

 

슈퍼유저 엑세스 권한 취득

*root사용자

UID가 0인 사용자

시스템에대한 모든 권한 소유

파일 및 디렉토리에 대한 소유자의 권한 수정할수있음

모든권한 가지고 있어서 패스워드 유출시 위험

*su로 사용자 전환

su [user]

[user]로 사용자 전환

[user]가 지정되지 않으면 root로 전환

*su - 로 사용자 전환

su - [user]

해당사용자의 환경설정까지 전환

사용자전환시 pwd는 홈 디렉토리

*sudo를 시용하여 root로 실행

sudo [command]

윈도우의 관리자 권한 실행과 같음

사용자 해당계정의 패스워드만 필요

su를 사용하여 root전환시 root의 패스워드 필요

wheel그룹의 구성원만 sudo명령어 사용할수있음

/var/log/secure/ 에 명령어 사용흔적이 기록됨

 

로컬 사용자 계정 관리

userdel [option] [username] 사용자 제거

     ㄴ -r : 사용자를 제거할때 사용자의 홈 디렉토리까지 같이 제거

.......

 

 

 

*/etc/passwd

ex) ntp:x:38:48: : /etc/ntp:/sbin/nologin

ntp: 사용자이름

x: 안쓰는 기능은 비워서 x로 표시한것

38: UID값

48: GID값(Group ID)

etc: 설명(비워있어도 ㄱㅊ)

/ntp:/sbin/nologin : user의 home dir

/sbin/nologin : user가 사용하는 쉘(ex) bin/bash/), 로그인이 안되는 계정이라는 의미(계정인데 쉘이 없음)

 

*/etc/group

ex) root:x:0:

ㄴ x: 비밀번호 (안쓰니까 x)

0: GID

 

wheel:x:10:user01

ㄴ wheel: 그룹이름

user01: 보조그룹

 

FIND 명령어 다시 해야됨. sudo systemctl set-default multi-user.target dkagh1. host only nat??? nmcli con up enp0s8 ifconfig enp0s8 주소 확인 ubuntu 터미널 -> ssh user@<vm의 enp0s8 주소> sudo apt-get install -y qemu-kvm libvirt-daemon-system virtinst bridge-utils cpu-checker sudo adduser student kvm sudo kvm-ok sudo apt-get install virt-manager reboot centos7.kcow2 user/user root/toor [user@localhost ~]$ su - user Password: Last login: Mon May 10 13:35:36 KST 2021 on pts/0 [user@localhost ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin ????? ls -> $PATH 에 존재하는지 확인 ------------------------------------- [user@localhost ~]$ useradd cccr1 useradd: Permission denied. useradd: cannot lock /etc/passwd; try again later. [user@localhost ~]$ su - Password: Last login: Mon May 10 13:21:52 KST 2021 on pts/0 [root@localhost ~]# useradd cccr1 [root@localhost ~]# tail /etc/passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin user:x:1000:1000:user:/home/user:/bin/bash cccr1:x:1001:1001::/home/cccr1:/bin/bash [root@localhost ~]# tail -1 /etc/passwd cccr1:x:1001:1001::/home/cccr1:/bin/bash [root@localhost ~]# su cccr1 [cccr1@localhost root]$ ls ls: cannot open directory .: Permission denied [cccr1@localhost root]$ cd ~ [cccr1@localhost ~]$ pwd /home/cccr1 [cccr1@localhost ~]$ su - Password: Last login: Mon May 10 13:42:40 KST 2021 on pts/0 [root@localhost ~]# su - cccr1 Last login: Mon May 10 13:44:39 KST 2021 on pts/0 [cccr1@localhost ~]$ su --help Usage: su [options] [-] [USER [arg]...] Change the effective user id and group id to that of USER. A mere - implies -l. If USER not given, assume root. Options: -m, -p, --preserve-environment do not reset environment variables -g, --group <group> specify the primary group -G, --supp-group <group> specify a supplemental group -, -l, --login make the shell a login shell -c, --command <command> pass a single command to the shell with -c --session-command <command> pass a single command to the shell with -c and do not create a new session -f, --fast pass -f to the shell (for csh or tcsh) -s, --shell <shell> run shell if /etc/shells allows it -h, --help display this help and exit -V, --version output version information and exit [cccr1@localhost ~]$ id uid=1001(cccr1) gid=1001(cccr1) groups=1001(cccr1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [cccr1@localhost ~]$ pwd /home/cccr1 [cccr1@localhost ~]$ echo $HOME /home/cccr1 [cccr1@localhost ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/cccr1/.local/bin:/home/cccr1/bin [cccr1@localhost ~]$ exit logout [root@localhost ~]# su - Last login: Mon May 10 13:45:23 KST 2021 on pts/0 [root@localhost ~]# su cccr1 [cccr1@localhost root]$ id uid=1001(cccr1) gid=1001(cccr1) groups=1001(cccr1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [cccr1@localhost root]$ pwd /root [cccr1@localhost root]$ echo $HOME /home/cccr1 [cccr1@localhost root]$ echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [cccr1@localhost root]$ sudo tail /var/log/messages We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for cccr1: sudo: 1 incorrect password attempt [cccr1@localhost root]$ su - Password: Last login: Mon May 10 13:47:49 KST 2021 on pts/0 Last failed login: Mon May 10 13:49:51 KST 2021 on pts/0 There was 1 failed login attempt since the last successful login. [root@localhost ~]# tail /var/log/messages May 10 13:28:21 localhost nm-dispatcher: req:1 'dhcp4-change' [eth0]: start running ordered scripts... May 10 13:35:36 localhost su: (to user) user on pts/0 May 10 13:36:36 localhost su: (to user) user on pts/0 May 10 13:42:40 localhost su: (to root) user on pts/0 May 10 13:44:39 localhost su: (to cccr1) user on pts/0 May 10 13:45:23 localhost su: (to root) user on pts/0 May 10 13:45:30 localhost su: (to cccr1) user on pts/0 May 10 13:47:49 localhost su: (to root) user on pts/0 May 10 13:47:55 localhost su: (to cccr1) user on pts/0 May 10 13:49:51 localhost su: FAILED SU (to root) user on pts/0 May 10 13:49:54 localhost dhclient[799]: DHCPREQUEST on eth0 to 192.168.122.1 port 67 (xid=0x208ba53e) May 10 13:49:55 localhost su: (to root) user on pts/0

 


useradd 계정생성

su -> 이전 사용자의 $PATH 를 상속받음

su - -> login 사용자의 $PATH를 사용한다.

로그인 내역은 /var/log/messages 에 저장된다.

 

 

useradd --help

userdel

cccr3 계정을 생성하시오. 홈디렉토리는 /home/guest 쉘은 /bin/sh 로 로그인되게 생성하시오.

su - cccr3 $HOME -> /home/guest

[root@localhost user]# su - cccr3 su: user cccr3 does not exist [root@localhost user]# useradd -d /home/guest -s /bin/sh cccr3 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists [root@localhost user]# su - cccr3 -sh-4.2$ exit logout [root@localhost user]# usermod --help Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account [root@localhost user]#

 

cccr3 의 계정을 uid 2010,보조그룹에 wheel을 추가해보세요.

[root@localhost user]# usermod --help Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account [root@localhost user]# usermod -aG wheel cccr3 [root@localhost user]# id cccr3 uid=1003(cccr3) gid=1003(cccr3) groups=1003(cccr3),10(wheel) [root@localhost user]# usermod --help Usage: usermod [options] LOGIN Options: -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account [root@localhost user]# usermod -u 2010 cccr3

 


sudo : super user 의 권한대행 userdel : r 옵션의 유무에 따른 차이점 존재 10 userdel -r cccr1 /etc/shadow 파일 - passwd 를 저장해 두는곳 user:$6$TnOJrvVXvEokzqJs$1oSBnlfaE2loyMdU9akf08cJIv.wAfOrCHsr8UBlPUUFGmTycGlbnd1zfm/wWkWqrKbLewvo28.JiaOkb3a8S.::0:99999:7::: $6$ : SHA-256 으로 암호화 $1$ : MD 5 방식으로 암호화 TnOJrvVXvEokzqJs$ : salt 임의로 선택되는값 $1oSBnlfaE2loyMdU9akf08cJIv.wAfOrCHsr8UBlPUUFGmTycGlbnd1zfm/wWkWqrKbLewvo28.JiaOkb3a8S : 암호화된 passwd 사용자 passwd 지정 -> salt + <사용자 지정 pw> -> 암호화 -> charg -d 0 <계정명> [root@localhost ~]# vi ~/.bash_logout rm -rf .~~ 삭제 ----------------------------------------------------------- no login 9 usermod -s /sbin/nologin test_passwd 10 cat /etc/passwd -------------------------------- 특수권한 파일 디렉토리 set uid 소유자 권한으로 실행??? XXXX chmod u+s set gid 소유 그룹의 권한으로 실행 ??????? chmod g+s sticky bit x 해당 디렉토리에서 파일 삭제시 본인 소유의 파일 삭제가능 chmod o+t user -> passwd(user) -> (root)패스워드 변경 -> /etc/shadow update SetUid - 바이너리 또는 스크립트 파일에 적용한다. - 실행한 사용자가 아닌 파일소유자의 권한으로 실행된다. - 실행 권한이 x대신 s로 표시 된다. ---------------------------------------------------------- 예제 /usr/bin/passwd 파일 의 setuid 확인 chmod u-s 와 u+s 의 차이점 확인 예제2 [root@localhost ~]# cat /tmp/test.sh #!/bin/bash echo "hello world" 파일생성후 기타사용자 소유자 등의 실행권한 부여에 따른 차이점 확인 SetGid - 일반적으로 디렉토리에 설정하고 사용하는 경우가 많다. - 주로 데몬프로세스가 사용하는 그룹의 권한을 공유하기 위해 사용한다. /run/log/journal 에서 root 사용자로 파일 생성 -> 소유 그룹의 권한은?? chmod g-s /run/log/journal 에서 root 사용자로 파일 생성 -> 소유 그룹의 권한은?? Sticky bit - 디렉토리에 기타사용자 권한이 RWX인 경우 모든 사용자가 해당디렉토리에서 파일을 생성 및 삭제 가능 - 파일 생성 및 read는 문제 없지만 삭제는 문제가 발생함 - sticky bit 설정시 파일 생성 가능 but 다른사용자의 파일은 삭제 불가능 /tmp or /var/tmp 는 sticky bit 부여된 디렉토리 user01 생성후 /tmp/fileA생성 -> user 은 /tmp/fileA 삭제 가능???? chmod o-t /tmp/ 이후 user 은 /tmp/fileA 삭제 가능???? ==========================================

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.