Kali Linux/기초

특수권한_setuid, setgid, sticky bit

jin_li 2022. 11. 11. 12:30

리눅스에는 기본적인 세 가지 권한 rwx말고도 여러 특수권한들이 있다.
그 중 setuid, setgid, sticky bit을 알아보자.

setuid : 파일을 실행할 때 그 파일의 소유주의 권한으로 실행할 수 있게 하는 특수 권한.

권한정보의 실행부분에 s로 표시된다.
s가 소문자일 때(rws) : 그 파일에 실행권한이 있는 상태에서 setuid 걸려있다는 뜻.
s가 대문자일 때(rwS) : 그 파일에 실행권한이 없는 상태에서 setuid 걸려있다는 뜻.

/usr/bin/passwd 파일은 실행권한이 있고, setuid가 걸려있다.


setuid를 사용하게 된 배경은, 어떤 사용자가 계정 비번을 변경하고자 할 때 원래라면 /etc/shadow에 접근해야 한다. 그러나 이 파일은 root권한만 접근할 수 있음... 따라서 passwd명령어를 통해 비번을 변경하고자 할 때만, 사용자를 root계정으로 인정해줘서 파일에 접근, 실행할 수 있게 해둔 것. 리눅스에서는 이렇게 root권한이 필요한 파일에 대하여 setuid를 걸어두고 관리할 수 있다.

setgid : 그룹id로 setuid와 같은 역할을 하는 권한이다.

s(소문자), S(대문자)로 표시되는데, 해석은 setuid와 똑같이 하면 된다.
(ex)
-rwsr -sr -x : 실행권한이 있는 상태에서 setgid 걸려있음
-rwsr -Sr -x : 실행권한이 없는 상태에서 setgid 걸려있음



sticky bit : 디렉토리에 설정되는 권한으로, sticky bit이 걸리면 그 디렉토리는 누구든지, 얼마든지 파일을 생성할 수 있게 된다.(단, 생성한 파일 삭제는 본인만 가능하다)

권한정보 끝에 t로 표시된다.
t(소문자) : 실행권한이 있는 상태에서 sicky bit 걸려있다
T(대문자) : 실행권한이 있는 상태에서 sticky bit 걸려있다

/tmp 는 sticky bit 이 걸린 대표적인 디렉토리