Linux - 11. 퍼미션
by jennysgap퍼미션
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