리눅스마스터1급 : SetUID, SetGID, StickyBit에 대하여
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,539 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : SetUID, SetGID, StickyBit에 대하여
⑦ 특수 목적 접근 모드
앞서 파일에 대한 권한으로 r, w, x 비트 이외에 t, s 비트를 설정할 수 있다고 기술한 바 있었는데, 이것들은 SetUID, SetGID 및 스티키 비트(Sticky bit)에 대한 것들이다.
이 비트들은 8 진수 숫자로 표기하는 퍼미션 방식에서 설명한 일반 퍼미션 앞에 각각 4, 2, 1의 숫자를 붙여서 설정하면 된다.
즉, 1000단위에 4, 2, 1로 하여 절대 모드 지정 방식으로 설정이 가능하다.
이 설정을 해제할 때에는 0으로 하여 설정하면 된다.
이들은 간단하게 정리하면 다음과 같다.
특수 목적 접근 모드
코드 | 비트명 | 절대 모드 방법 | 의미 |
t | sticky bit | 1000 | 파일의 소유자만 삭제가능 설정 |
s | SetGID(Set Group ID) | 2000 | 프로세스 실행 당시 GID로 설정 |
s | SetUID(Set User ID) | 4000 | 프로세스 실행 당시 UID로 설정 |
그리고 소유자와 그룹에 대해 s 문자를 더하는 방식(u+s, g+s 및 ug+s)으로 SetUID와 SetGID를 설정할 수 있고, t 문자를 더하는 방식(+t 또는 o+t)으로 스티키 비트를 설정할 수 있다.
해제를 위해서는 + 대신 – 를 기술하여 설정하면 된다.
⑧ 스티키 비트(sticky bit)
스티키 비트가 설정되어 있는 파일은 파일의 소유자만 삭제가 가능하며, 디렉토리에 스티키 비트가 설정된 경우에는 해당 디렉토리에 파일을 생성하면 생성한 사용자의 소유로 파일이 생성되며, 해당 파일은 root 사용자와 생성한 파일의 소유자만이 삭제할 수 있다.
만약 공유 디렉토리를 운영하는 경우에 이 디렉토리 하에서는 누구라도 파일을 생성을 할 수 있는데, 이 공유 디렉토리에 스티키 비트를 설정하면 생성된 파일은 각각 생성한 사용자의 소유로 되고, 수정 및 삭제 또한 생성한 사용자만이 할 수 있게 된다.
따라서 공용 디렉토리에 스티키 비트 설정을 하면 해당 디렉토리에 생성된 각각의 사용자의 파일을 보호할 수 있다.
다음은 test 디렉토리에 스티키 비트를 설정한 것이다.
일반 다른 사용자 설정 부분에 실행 문자인 x 대신 t가 설정된 것을 볼 수 있다.
|
|
|
| [root@SUK121 ~]# chmod 1755 test [root@SUK121 ~]# ls -l | grep test drwxr-xr-t 2 root 399 4096 9월 20 01:31 test -rwxr-sr-x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~]# |
|
|
|
|
⑨ SUID(set_user_id)
SetUID가 설정된 파일을 시행하는 경우에는 실행 시에 실행시킨 사용자의 권한이 아닌 파일의 소유자 권한으로 실행된다.
즉, 일반적으로 특정 실행파일을 실행하였을 경우에는 그 파일을 실행시킨 실행자의 권한으로 실행되는데, SetUID가 설정되어 있으면 파일의 소유자가 su-user인 경우에 root가 실행하던 다른 일반 사용자가 사용하던 이 파일은 소유자인 su-user의 권한으로 실행된다.
다음은 파일에 4775의 퍼미션을 주어 일반 퍼미션 755와 함께 SetUID를 설정한 것이다.
소유자의 권한에서 읽기, 쓰기 및 SetUID 비트가 있는 것을 볼 수 있다.
|
|
|
| [root@SUK121 ~]# chmod 4755 test1 [root@SUK121 ~]# ls -l test1 -rwsr-xr-x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~] |
|
|
|
|
⑩ SGID(set_group_id)
SetGID가 설정된 파일을 실행하는 경우에는 실행 시에 실행시킨 그룹의 권한이 아닌 파일의 소유 그룹 권한으로 실행된다.
이것은 SetUID와 같은 개념으로 이해하면 된다.
다음은 파일에 2775의 퍼미션을 주어 일반 퍼미션 755와 함께 SetGID를 설정한 것이다.
그룹의 권한에서 읽기, 쓰기 및 SetGID 비트가 있는 것을 볼 수 있다.
|
|
|
| [root@SUK121 ~]# ls -l test1 -rwsr-xr-x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~]# chmod 2755 test1 [root@SUK121 ~]# ls -l test1 -rwxr-sr-x 1 root root 15 9월 20 16:55 test1 [root@SUK121 ~]# |
|
|
|
|
|
|
|
| SetUID, SetGID, Sticky bit 표시 대소문자에 대하여 가끔씩 SetUID, SetGID 및 Sticky bit의 설정 표시가 소문자가 아닌 대문자로 표시되어 있는 경우가 있다.
이는 다음과 같은 의미를 나타낸다.
- 대문자 S로 표시된 SetUID: SetUID는 설정되어 있지만, 일반 퍼미션에 파일 소유자 실행 퍼미션이 존재하지 않음을 의미함. 따라서 SetUID가 적용되지 않음. - 대문자 S로 표시된 SetGID: SetGID는 설정되어 있지만, 일반 퍼미션에 그룹 실행 퍼미션이 존재하지 않음을 의미함. 따라서 SetGID가 적용되지 않음.
- 대문자 T로 표시된 Sticky bit: Sticky bit는 설정되어 있지만, 일반 퍼미션의 맨 마지막 자리에 실행 퍼미션이 존재하지 않음을 의미함. 따라서 Sticky bit가 적용되지 않음. |
|
|
|
|
관련자료
-
이전
-
다음