개인공부

리눅스 - 사용자 계정관리4 본문

리눅스

리눅스 - 사용자 계정관리4

풀스택개발 2018. 7. 19. 21:29

gpasswd - /etc/group, /etc/gshadow 파일을 관리한다.

#gpasswd [옵션] [그룹명]

-a [계정] 사용자 계정을 그룹에 추가한다.

-d [계정] 사용자 계정을 그룹에서 삭제한다.

-r 그룹 암호를 삭제한다.


1. 사용자 계정 추가

#useradd member1

#useradd member2


2. 그룹추가

#groupadd -g 2017 group2017

#cat /etc/passwd | tail -2 // 계정 생성 확인

#cat /etc/group  | tail -1 // 그룹 생성 확인


3. 사용자 계정을 그룹에 추가

#gpasswd -a member1 group2017 // member1 계정을 group2017 그룹에 추가

#usermod -G 2017 member2 // member2 계정을 group2017 그룹에 추가

            group2017 member2   


#cat /etc/passwd | tail -2 // GID 필드 확인

#cat /etc/group  | tail -1 // 멤버 필드 확인

group2017:x:2017:member1,member2


#groups [계정명]

#groups member1 member2

[계정명]: [주그룹] [보조그룹] ... [보조그룹]

member1 : member1 group2017

member2 : member2 group2017


4. 그룹 멤버 삭제

#gpasswd -d member2 group2017 // group2017 그룹에서 member2 계정 제거

#cat /etc/group | tail -1

#groups member2


5. 그룹 암호 설정

#gpasswd group2017 // group2017 그룹에 패스워드 설정

group2017 그룹의 암호를 바꾸는 중

새 암호: 

새 암호를 다시 입력하십시오:


#cat /etc/gshadow | tail -1 // 패스워드 설정 확인


6. 그룹 패스워드 용도 확인

#gpasswd -a member2 wheel // member1 계정을 wheel 그룹에 추가

#id member2

uid=1240(member2) gid=1241(member2) groups=1241(member2),10(wheel)


#su - member2 // member2 계정 스위칭

$groups // 소속 그룹 확인

member2 wheel // 주 그룹  member2

   보조그룹 wheel

$newgrp wheel // member2 <--> wheel

$groups // 주그룹 member2를 wheel 로 변경

wheel member2


$newgrp group2017 // 자신이 속한 그룹이아닌 다른 그룹으로

$groups // 주그룹을 변경

group2017 wheel member2 // group2017 그룹에 암호가 설정되어 있어

                                       변경 시 해당 그룹에 암호가 필요하다.

   



sudo 권한 설정

사용자 추가나, 시스템 종료 등 특정 명령어만 실행할 수 있는 권한을 부여하는것


sudo 권한 설정 파일

/etc/sudoers


sudo 권한 설정 명령어

visudo == vi /etc/sudoers // 차이점은 오타나 문법이 틀렸을때 저장이 안됨

vipw == vi /etc/passwd

vigw == vi /etc/groups


     90 ## Allow root to run any commands anywhere

     91 root    ALL=(ALL)       ALL

    

[계정명] [호스트]=(옵션) [명령어]


실습 1

(1) 일반 사용자 계정으로 로그인 ( member1 ) 후, 일반 사용자가

        사용할 수 없는 명령어 3개 찾기

(2) 명령어 실행이 불가능 한 것 확인 후, 해당 명령어가 위치한

    절대 경로 확인 ( shutdown, reboot, halt 등 제외 )

절대 경로 확인 방법 - #which [명령어]


명령어 1 경로 : /usr/sbin/useradd

명령어 2 경로 : /usr/sbin/usermod

명령어 3 경로 : /usr/sbin/userdel


#visudo

member1 ALL=/usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod

   

#su - member1

$passwd // 암호 설정

$sudo [명령어]

$sudo useradd sudotest-1

[sudo] password for member1: // member1 암호 입력

$cat /etc/passwd | tail -1 //sudotest-1 계정 생성 확인


$sudo usermod -c "sudo-test" sudotest-1 //usermod 실행 확인

$cat /etc/passwd | tail -1 //sudotest-1 계정 정보 변경 확인


$sudo userdel -r sudotest-1 // sudotest-1 계정 삭제

$cat /etc/passwd | tail -1 // 계정 삭제 확인 


패스워드 없이 sudo 명령어 사용 설정

#visudo

member1 ALL=NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod



------------------------------------------------------------------------------

패스워드 정책 설정


chage - 패스워드 정책 설정

-l 설정 내용 확인


-d : 최종 암호 변경일 (/etc/shadows 3번째 필드)

-m : 암호를 변경한 후 다시 변경할 수 있는 최소 기간 (/etc/shadows 4번째 필드)

-M : 유효한 암호의 최대 일 수 (/etc/shadows 5번째 필드)

-W : 사용자가 암호가 만료되기전 경고할 일 수 (/etc/shadows 6번째 필드)

-I : 암호 유효기간이 발료된 후 사용자의 계정이 비활성화 될 일 수 (/etc/shadows 7번째 필드)

-E : 사용자 계정을 사용할 수 있는 유효기간 (YYYY/MM/DD) (/etc/shadows 8번째 필드)


시스템 날짜 변경

#date -s "2017-04-02"

2017. 04. 02. (일) 00:00:00 KST


계정명 : member1 계정 유효 기간 : 2018-04-02


최초 설정한 암호는 최소 하루뒤에 변경 할 수 있으며, 암호는 10일에 한번씩 변경해야 하고,

최소 3일 전에 암호를 변경할 수 있도록 경고를한다. 만약 암호가 만료된 10일 뒤에도

암호를 변경하지 않으면 계정을 비활성화 시킨다.


#passwd memeber1


#chage -l member1 //member1 계정의 패스워드 정책 확인

마지막으로 암호를 바꾼 날 : 4월 02, 2017

암호 만료 : 안함

암호가 비활성화 기간 : 안함

계정 만료 : 안함

암호를 바꿀 수 있는 최소 날 수 : 0

암호를 바꿔야 하는 최대 날 수 : 99999

암호 만료 예고를 하는 날 수 : 7



최초 설정한 암호는 최소 하루뒤에 변경 할 수 있으며 ( m 1  )

암호는 10일에 한번씩 변경해야 하고,    ( M 10 )

최소 3일 전에 암호를 변경할 수 있도록 경고를한다.  ( W 3  )

만약 암호가 만료된 10일 뒤에도 암호를 변경하지 않으면 계정을 비활성 ( I 10 )

계정 유효 기간 : 2018-04-02 ( E 2018/04/02 )


#chage -E 2018/04/04 -m 1 -M 10 -W 3 -I 10 member1

#chage -l member1


마지막으로 암호를 바꾼 날 : 4월 02, 2017

암호 만료 : 4월 12, 2017

암호가 비활성화 기간 : 4월 22, 2017

계정 만료 : 4월 04, 2018

암호를 바꿀 수 있는 최소 날 수 : 1

암호를 바꿔야 하는 최대 날 수 : 10

암호 만료 예고를 하는 날 수 : 3



1번 세션 (root) 2번 세션 (member1)

#su - member1

$passwd

(현재) UNIX 암호:

암호 변경을 위해 조금더 기다려 주십시오.

#date -s "2017-04-03" $passwd

#date -s "2017-04-09" $su - memeber1 // member1 로그인

#date -s "2017-04-10" 2 $su - memeber1 // member1 로그인

#date -s "2017-04-11" 1 $su - memeber1 // member1 로그인

#date -s "2017-04-12" 0 $su - memeber1 // member1 로그인

#date -s "2017-04-13" $su - memeber1 // member1 로그인




#date -s "2017-04-02"

#passwd member1

#chage -E 2018/04/04 -m 1 -M 10 -W 3 -I 10 member1

#chage -l member1

#chage -d 2017/04/02 member1


#date -s "2017-04-09" $su - memeber1 // member1 로그인

#date -s "2017-04-10" 2 $su - memeber1 // member1 로그인

#date -s "2017-04-11" 1 $su - memeber1 // member1 로그인

#date -s "2017-04-12" 0 $su - memeber1 // member1 로그인

#date -s "2017-04-13" $su - memeber1 // member1 로그인




디렉토리 및 파일의 권한과 소유권

- 시스템에 있는 모든 파일과 디렉토리는 접근 할 수 있는 권한 및 소유권 부여되어있다.

- 파일이나 디렉토리의 접근을 제한 것을 허가권(Permission)이라 한다.

- 파일이나 디렉토리의 소유권한을 소유권 (Ownership) 이라고 한다.



실습용 계정,그룹 생성

#groupadd -g 800 web_user

#groupadd -g 900 web_admin


#useradd -g 800 web-user1

#useradd -g 900 web-admin1


#cat /etc/passwd 

web-user1:x:500:800::/home/web-user1:/bin/bash

web-admin1:x:501:900::/home/web-admin1:/bin/bash


#ll /bin/ls

-rwxr-xr-x. 1 root root 109208 2016-05-11 17:59 /bin/ls

  root   root 

[소유계정] [소유그룹]




chown (change ownership / 소유권 변경)


형식 - #chown [소유계정]:[소유그룹] [파일/디렉토리명]


#cd /home/web-user1

#touch test

#ll

-rw-r--r--. 1 root root 0 2017-04-02 12:29 test

#chown web-admin1 test // test 파일의 소유자를 web-admin1 변경

#ll

-rw-r--r--. 1 web-admin1 root 0 2017-04-02 12:29 test


#chown web-user1 test

-rw-r--r--. 1 web-user1 root 0 2017-04-02 12:29 test


#chown web-admin1:web_admin test // test 파일의 소유계정:소유그룹 변경

-rw-r--r--. 1 web-admin1 web_admin 0 2017-04-02 12:29 test


test파일의 소유권 변경

소유계정 : web-user1

소유그룹 : web_user

#chown web-admin1:web_admin test

#chown web-admin1.web_admin test



형식 - #chown [소유계정]:[소유그룹] [파일/디렉토리명]

chown [계정명] [파일] 소유계정 변경

chown :[그룹명] [파일] 소유 그룹 변경


허가권 (Permission)


-rwxrwxrwx

- r w x r w x r w x

파일 유형   사용자(User) 그룹(Group) 기타사용자(Other)

    소유 계정 소유 그룹

rwx의 의미

r (Read) - 읽기

w (Write) - 쓰기

x (eXecute) - 실행

- (bar) - 해당 권한이 없는 경우


ex)

rwxr-xr-x : 사용자는 읽기, 쓰기, 실행권한을 모두 가지고 있고,

            그룹과 기타사용자는 읽기와 실행권한만 있다.

rw------- : 사용자만 읽고 쓰기가 가능하고, 그룹과 기타사용자는 아무 권한이 없다.


r-------- : 사용자만 읽기 권한을 가지고 있다.


#ll /etc/passwd /etc/shadow



chmod - 허가권 변경

- 기호 모드 (상대값) (symbolic mode) - 사람의 입장

- 숫자 모드 (절대값) (absolute mode) - 컴퓨터의 입장


chmod [옵션] [기호/숫자모드] [파일명]

-R 하위 디렉토리 및 파일까지 전부 적용


- 기호모드

+ : 허가권 부여 u : 사용자(소유자) 권한

- : 허가권 제거 g : 그룹 권한

= : 허가권 유지 o : 기타 사용자

s : SetUID,SetGID 권한 부여 a : 사용자, 그룹, 기타 사용자 모두

t : Sticky Bit 권한 부여


ex) 허가권 rwx r-x r-x 파일명 test 

-> 그룹과 기타사용자의 x(실행)권한을 제거

#chmod go-x test

-> 그룹에는 쓰기권한 추가, 기타사용자에게 읽기, 실행권한 제거

#chmod g+w,o-rx test

#mkdir -p /practice/symbolic_chmod/

#cd /practice/symbolic_chmod/

#touch test-file

#ll

rw- r-- r-- test-file

(1)파일의 소유자(사용자), 그룹과 기타사용자에 실행권한 추가

rwx r-x r-x

#chmod u+x,g+x,o+x test-file

#chmod a+x test-file

(2) 파일의 소유자의 모든 권한을 제거하고, 그룹은 모든권한, 기타사용자는

    쓰기 권한만 추가

--- rwx -w-

#chmod u-rwx,g+w,o-rx+w test-file

(3) 사용자, 그룹, 기타 사용자 모두 읽기와 쓰기 권한만 추가 

rw- rw- rw-

#chmod u+rw,g-x,o+r test-file

- 숫자 모드

- 각각의 허가권 필드를 3자리의 8진수로 표기

- 완전환 표기법은 4자리이나 일반적으로 3자리를 사용

사용자 필드 허가권 기호 숫자모드


사용자 읽기 r 400 (100단위)

쓰기 w 200

실행           x 100


그룹         읽기 r 40 (10단위)

쓰기 w 20

실행 x 10


기타 사용자         읽기 r 4 (1단위)

쓰기 w 2

실행 x 1

ex) rwx r-x r-x

사용자 400 + 200 + 100 = 700

그룹    40 + 10     =  50

기타 사용자         4  + 1     =   5

= 755

사용자 필드 사용자 그룹 기타 사용자

r w x r w x r w x

자리수 4 2 1 4 2 1 4 2 1

2진수              1 1 1 1 1 1 1 1 1

8진수                   7  7   7


r w x r - x r - x

1 1 1 1 0 1 1 0 1

  7   5   5


r - x r - x r - x

4 + 1 4 + 1 4 + 1 

  5 5           5 


test-file

chmod 744 test-file ( rwx r-- r-- )


ex) rwx rwx r-x ( 7 7 5 )

r-x r-- --- ( 5 4 0 )

rw- rwx --x ( 6 7 1 )

디렉토리 허가권 테스트

#cd /practice/symbolic_chmod/

#mkdir test-dir

#chmod 000 test-dir

--- --- ---

세션 추가 

1번 세션 root 2번 세션 web-admin1

# #su - web-admin1

$cd /practice/symbolic_chmod/

test-dir 디렉토리의 허가권을 001, 002, 003 ... 007 까지 변경하면서

허가권 변경하는 명령어 입력 후, 2번세션에서 아래 명령어 테스트

(1) $cd test-dir X

성공 시 (2), (3) 진행 후 cd.. 으로 상위 디렉토리 이동 후 다음 권한 진행

(2) $touch test

(3) $ls

--x (1)  O (2)  X (3) X

-w- (1)  X (2)  X (3) X

-wx (1)  O (2)  O (3) X

r-- (1)  X (2)  X (3) X

r-x (1)  O (2)  X (3) O

rw- (1)  X (2)  X (3) X

rwx (1)  O (2)  O (3) O



UMASK - 새로운 파일/디렉토리 생성 시 기본 허가권을 경정하는 기준이되는 값 

      - 기본값 022

  - 파일의    기본 허가권 666

  - 디렉토리의 기본 허가권 777

  - 파일이나 디렉토리의 기본 허가권에서 UMASK 값을 뺀 값이 허가권으로 결정


디렉토리 파일

기본값 777 666

UMASK 022 022

결정된 허가권         755 644

기호         rwx r-x r-x rw- r-- r--


#mkdir test123 // 디렉토리 허가권 확인

#touch test456 // 파일 허가권 확인


#umask // 현재 시스템에 설정된 UMASK 값을 확인하는 명령어 

0022

#umask [값] // [값]으로 UMASK 값 변경


#umask 007 // UMASK 값 변경 

#umask

0007 


디렉토리         파일

777 666 기본값

007 007 UMASK

770 660 적용값

RWX RWX --- RW- RW- ---


777 666

020 020 UMASK

757 646

RWX R-X RWX     RW- R-- RW-


#umask 022


#cd /home

#ll

rwx------. 2 web-admin1 web_admin 4096 2017-04-02 12:15 web-admin1

drwx------. 2 web-user1  web_user  4096 2017-04-02 12:29 web-user1


#useradd -g web_admin web-admin2


계정 그룹

web-admin1 web_admin

web-admin2 


web-admin2 계정이 web-admin1의 홈디렉토리 접근, 읽기, 쓰기가 가능 하도록 설정

단, 기타 사용자 권한은 수정X


#chmod 770 web-admin1

rrwxwx---. 2 web-admin1 web_admin 4096 2017-04-02 12:15 web-admin1


#su - web-admin2

$cd /home/web-admin1 (x)

$touch test1 (w)

$ls (r)


특수권한의 종류 SetUID, SetGID, StickyBit

SetUID

- 실행파일에 한해서 설정이 가능하며, SetUID 속성이 있는 경우

  실행한 사용자가 아닌 파일을 소유한 사용자의 권한으로 프로세스(프로그램) 실행된다.

- SetUID는 보통 root가 소유한 실행파일에 적용을 하며, 이런 경우에 해당 파일을

  실행하는 순간에는 root의 권한을 가지게 된다.

 

#ll /etc/passwd /etc/shadow

644 400

rw- r-- r--  r-- --- ---


#su - web-admin1

$passwd // 명령어 실행 가능

$exit


#ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 2015-11-24 01:30 /usr/bin/passwd



SetUID 설정방법

기호모드 (u+s)

숫자모드 (4000)

#cd /practice

#mkdir SetUID

#cd SetUID

#touch SetUID-FILE-1

#touch SetUID-FILE-2

#chmod 4644 SetUID-FILE-1

#chmod 4544 SetUID-FILE-2

#ll

-rwSr--r--. 1 root root 0 2017-04-02 14:51 SetUID-FILE-1

-r-sr--r--. 1 root root 0 2017-04-02 14:51 SetUID-FILE-2

실행 권한이 있는 파일 : s

            없는 파일 : S

#cat > SetUID-FILE-3

SetUID FILE TEST!!!!!!!!

#chmod 400 SetUID-FILE-3

-r--------. 1 root root 23 2017-04-02 14:55 SetUID-FILE-3

#su - web-admin1

$cat /practice/SetUID/SetUID-FILE-3

$exit

#ll /bin/cat

-rwxr-xr-x. 1 root root 45224 2016-05-11 17:59 /bin/cat

#chmod u+s /bin/cat

#ll /bin/cat

-rwsr-xr-x. 1 root root 45224 2016-05-11 17:59 /bin/cat


#su - web-admin1

$cat /practice/SetUID/SetUID-FILE-3

#su - webadmin1

$whoami

$who am i

UID - RUID (Real UID)

web-admin1

  EUID (Effective UID)

root     pts/1        2017-04-02 22:40 (100.100.100.1)

GID - RGID

  EGID

원상복구

cat 파일의 SetUID 제거

#chmod u-s /bin/cat

'리눅스' 카테고리의 다른 글

리눅스 - 데몬이란?  (0) 2018.07.20
리눅스 - setGID  (0) 2018.07.20
리눅스 - 사용자 계정관리3  (0) 2018.07.16
리눅스 - 사용자 계정관리2  (0) 2018.07.16
리눅스 정리 - 사용자 계정관리  (0) 2018.07.16
Comments