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  W
 (3) $ls    R
 
   --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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
    
    
    
    
    
    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  
  

 

 


     
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


           
           

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

빠진날 3  (0) 2017.04.15
빠진날 2  (0) 2017.04.15
계정생성  (0) 2017.04.01
환경 변수  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26

+ Recent posts