딩굴댕굴

Linux - 11. 퍼미션

by jennysgap

BOX

퍼미션

1) chmod : change mode

"ls -l"의 출력결과 중 1번 필드인 mode 필드에 대해 변경할 권한을 갖는 명령

- 심볼릭 모드형태의 변경

- 옥탈모드 형태의 변경

- root는 권한에 영향을 받지않는다.

- chmod는 다른 유저의 접근을 통제하겠다는 의미

* root(관리자)를 제외하고는 자신의 파일에 대해서만 적용이 가능.

[사용법] #  chmod  [-option] 바꿀권한  파일명

             #  chmod  -R  바꿀권한 디렉터리명      :  디렉터리 내부에 들어있는 파일모두 권한을 변경.

[사용예]

#  chmod  u-w  file_name   :  소유자 자리에서 'w'권한을 삭제

#  chmod  g+w  file_name  :  그룹에 'w'권한을 부여

#  chmod  o-r   file_name   :  나머지 부분에 'r'권한 삭제

#  chmod  600  file_name  :  소유권자만 'rw' 권한을 가짐.

#  chmod  464  file_name   :  소유권 'r', 그룹 'rw', 나머지 'r'


* Otal mode

r   - 4  /  w - 2  /  x  - 1  /  -  - 0

[실습]

#  touch  file1 file2 file3 file4

#  chmod  o-r  file1

#  chmod  g-r  file2

#  chmod  u-w file3

#  chmod  o+r  file1

#  chmod  g+rw  file2

#  chmod  600 file1

#  chmod  640 file2

#  chmod  400 file3

#  chmod  000 file1

#  vi file1

-----------

asdf

-----------


2) 기본권한

파일 및 디렉터리 생성 시 자동적으로 만들어지는 보안이 적용된 권한.

umask 필터를 통해 만들어 짐. 생성되는 파일에 적용.

* umask 값은 유저당 1개만 사용이 가능.

* umask 설정 시 '--x', '-w-', '-wx' 등의 권한이 생기지 않도록 조정.

[사용법]

#  umask  [필터값]

#  umask  :  현재 설정된 필터 값

#  umask  027 : 필터로 사용될 뺄 값 설정

# su  계정명  :  switching user (현재 사용중인 계정을 다른 계정으로 변경)

# su  user1

$ id

[실습]

# chmod  622  file1

# ls  -l

# ls  >  file1

# cat file1

# su user1

$ id

$ vi file1

$ exit  (원래 계정으로 복귀)

# umask 055

# umask

# touch file6

# ls -l

* 디렉터리에 설정되는 권한의 이해

  ==> 디렉터리는 파일이다. 'ls' 명령은 디렉터리 뷰어 명령.

read  : 디렉터리 내 목록 참조 가능.

write : 파일 목록 색인 추가/삭제 가능.

eXec : 디렉터리 내 파일에 접근해 명령 실행 가능.

# mkdir dir2 dir3 dir4

# chmod  755 dir2

# chmod  750 dir3

# chmod  754 dir4

# man ls > dir2/ls.txt

# man ls > dir3/ls.txt

# man ls > dir4/ls.txt

# su user1

$ cd dir2

$ ls

$ cat ls.txt 

$ cd ..

$ cd dir3 (Error)

$ ls  dir3 (Error)

$ cd dir4 (Error)

$ ls  dir4


3) 특수한 권한

user, group 부분에 부여되는 특수한 권한으로 명령 실행 시 명령 소유권자, 또는 그룹의 권한을 임대.

set-user-id 설정 : 소유권자 권한을 실행자에게 임대

set-group-id 설정 : 소유권자가 소속된 그룹의 권한 임대

* 보안 정책에 위배되는 설정으로 기본적으로 설정된 것 이외에 설정 금지.

 [사용법]

# chmod  4755  file_name   : 기본 퍼미션 3개자리를 사용. 특수 퍼미션은 자리수를 한자리 확장

* setuid 설정은 4, setgid 설정은 2로 설정함. 두개의 특수퍼미션 부여시 6

* 설정을 해제 할 경우 기본 퍼미션만 실행하면 특수 퍼미션이 사라짐.

* 설정 시 실행퍼미션인 'x' -> 's' 변경

       [실습]

        # cp  /usr/bin/passwd  /root/dir1

        # ls -l 

        # chmod  755  passwd

        # ls -l

        # chmod 4755 passwd

        # chmod 6755 passwd

        # chmod 2755 passwd

        # chmod 755  passwd

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

        <창1 - root, 창2 - user1>

       [창2] $ passwd

       [창1] # ps  -ef  |  grep passwd   ------>  root 권한 임대

       [창1] # chmod  755  /usr/bin/passwd

       [창2] $ passwd

       [창1] # ps  -ef  |  grep passwd   ------>  user1 사용(권한 임대 X)

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

* Sticky bit  :  디렉터리에 설정되는 권한으로 보안성 높여주는 설정.

# chmod  1777  directory  :  파일 삭제관련 권한을 제한

    - root 관리자인 경우 파일 삭제

    - 소유자는 자신의 파일만 삭제

    - 디렉터리 소유자는 파일 삭제  

[창1] # mkdir  /data

        # chmod 777 /data -----> 절대권한 디렉터리(WEB, FTP)

        # cd  /data

        # man ls > man.ls

        # man cd > man.cd

        # man pwd > man.pwd

        # ls -l 

[창2] $ cd /data

         $ rm man.ls   ----------->  파일삭제 가능

         $ touch man.ls


* stick bit는 others 자리에 실행권한이 'x'를 't'로 설정

[창1] # chmod 1777 /data

        # ls  -ld  /data

[창2] $ cd /data

         $ touch file2

         $ rm man.cd  ------------> 에러 발생(권한 없음)

         $ rm file2             

** Sticky bit는 setuid, setgid와 같이 사용하지 않음.

** setuid, setgid는 실행 파일에만 설정, stick bit는 오직 디렉터리만 설정.

<특수설정 오류>

- 텍스트 파일에 특수 퍼미션을 설정 시 대문자 또는 다른 문자로 나타남.

- 대문자 형의 특수 퍼미션은 실행이 안됨을 의미.

 

4) 소유권 이전 명령

관리자 또는 소유자가 자신 소유의 파일 또는 디렉터리에 대해 소유권을 양도하기 위해 사용하는 명령

[사용법] #  chown  바뀔소유자명  파일명

             #  chown  -R  바뀔소유자명 디렉터리명

#  mkdir  dir1

#  cd  dir1

#  man cd > man.cd

#  cd  ..

#  chmod  700  dir1

[창2] $ cd /data/dir1  ---> error

         $ cd  /data

         $ ls -l               

         $ ls -l  dir1        ---> error

         $ more  dir1/man.cd  --> error

[창1]  # chown user1  dir1

         #  ls  -l  dir1

         #  chwon  -R  user1  dir1

         #  ls  -l  dir1

[창2] $ cd  dir1

         $ more  man.cd

       #  mkdir  dir1

       #  touch  file1

       #  ls -l

       #  chown user1 file1

       #  chown -R user1 file1

       #  ls -l

       #  chown user1:user1 file1

       #  ls -l

 


반응형

'BOX' 카테고리의 다른 글

Linux - 13. 네트워크 명령  (0) 2016.12.07
Linux - 12. 기타 명령  (0) 2016.12.07
Linux - 10. awk  (0) 2016.12.07
Linux - 09. sed에디터  (0) 2016.12.07
Linux - 08. 확장 명령(grep, find)  (0) 2016.12.07

블로그의 정보

jennysgap

jennysgap

활동하기