본문 바로가기
리눅스 (Linux)

특수 권한

by 멸치김밥 2021. 12. 19.

특수권한

  • 사용자의 파일 권한을 부여하여 기초적인 보안체계를 유지
  • 파일이나 디렉토리에 유저,그룹,기타 권한이 존재
  • 각각 읽기, 쓰기, 실행 권한을 부여
  • 이러한 권한을 수정하기 위해 chmod 명령을 사용하는데 쉘에서 특수 권한을 주기 위해서도 같은 명령을 사용한다
  • 특수권한은 SetUID, SetGID, Sticky Bit 세가지가 있다
  • 각 특수권한을 지정하는 방법
    $ chmod [1~7][rwx권한숫자3자리] [파일명]
    $ chmod 7721 setuid.sh
    --------------------------------------------------------------------
    $ ll
    -rws-wS--t 1 root        root           49 Dec 17 16:20 setuid.sh*
    --------------------------------------------------------------------
    SetUID = 4, SetGID = 2, Sticky Bit = 1
    기존 읽기, 쓰기, 실행 권한 자리 중 실행권한 자리에
    s, S, t, T가 들어간다.

  • SetUID

파일을 실행할 때 일시적으로 소유자의 권한을 얻어 실행할 수 있도록 한다

계정의 비밀번호 변경 같은 경우, /usr/bin/passwd 라는 명령어 실행파일로 /etc/passwd 파일에 접근하여 비밀번호를 바꿔주는 기능을 한다.

원래 root계정 외의 일반 계정들이 비밀번호를 변경하려면 일반계정에서 root계정으로 전환하여 비밀번호를 바꾸고 다시 일반계정으로 돌아가야하는 번거로움이 있는데

/usr/bin/passwd 파일에 SetUID가 적용되어 있어 일반계정들도 비밀번호를 바꿀 수 있게 해준다.

SetUID가 적용되었을 때 rwx 와 같이 기존에 실행 권한이 있을 때는 소문자 s로, 실행권한이 없으면 대문자 S로 표기된다.

 

 

 

  • SetGID

SetUID와 마찬가지로 SetGID가 설정된 파일을 실행하면 일시적으로 파일 소유그룹의 권한을 얻어 실행한다.

그룹실행권한이 있으면 소문자 s, 권한이 없으면 대문자 S로 표기된다

 

 

  • Sticky Bit

Sticky Bit가 설정된 디렉토리 안에서는 아무나 파일을 생성할 수 있지만

해당 파일의 삭제와 수정에 대한 권한은 소유자와 root만 가진다.

기존 기타사용자 실행 권한이 있으면 소문자 t, 없으면 대문자 T로 표기된다.

Sticky Bit 를 테스트 해보기 위해 sticky_bit, sticky_bit_2 라는 2개의 디렉토리를 생성하여 모든 권한을 주고 하나는 Sticky Bit까지 주었다.

$ mkdir sticky_bit
$ mkdir sticky_bit_2
$ chmod 777 sticky_bit
$ chmod 777 sticky_bit_2
$ ls -la

그리고 각 디렉토리 안에 사용자 kimchi 의 소유로

sticky_test, sticky_test_2 라는 파일을 하나씩 만들고 누구나 삭제할 수 있게 모든 권한을 주었다.

----------sticky_bit 디렉토리-------------
$ touch sticky_test
$ chmod 777 sticky_test

----------sticky_bit_2 디렉토리-------------
$ touch sticky_test_2
$ chmod 777 sticky_test_2

sticky_bit 디렉토리
sticky_bit_2 디렉토리

그리고 다른 사용자로 들어가서 해당 파일을 삭제해보았다.

----------sticky_bit 디렉토리-------------
$ rm sticky_test

----------sticky_bit_2 디렉토리-------------
$ rm sticky_test_2

sticky_test_2 파일은 정상적으로 삭제되었고

sticky_test 파일은 다음과 같은 문구가 나오고 삭제가 되지 않는다.

'리눅스 (Linux)' 카테고리의 다른 글

명령어 치환 (Command Substitution)  (0) 2021.12.19
특수 변수  (0) 2021.12.19
리눅스 - shell script 변수  (0) 2021.12.16
리눅스 - Shell Script  (0) 2021.12.16
리눅스 - shell script .sh 파일 실행하기  (0) 2021.12.16

댓글