리눅스 기초 다지기 - 47. SetUID, SetGID, Sticky Bit 특수권한

 

SetUID(4000)

: 슈퍼유저만 접근할 수 있는 실행 파일이나 명령에 대해, 일반 사용자가 접근이 필요한 경우 사용한다.

 

SetUID가 설정되어 있는 실행 파일을 일반 사용자가 실행할 경우 파일의 소유자 권한으로 프로세스를 실행한다.

SetUID가 설정되어 있는 파일의 사용자 권한은 “x”가 아닌”s”로 표기된다.

 

해당 파일에 실행 권한이 설정되어 있지 않은 상태에서 SetUID 설정 시에는 “S”로 표시된다.

 

# 실행 권한이 있는 파일의 SetUID 설정
ls -al
-rwxr-xr-x. 1 root root    0 Nov  9 10:28 test01.sh

# SetUID 설정
chmod u+s test01.sh

ls -al
-rwsr-xr-x. 1 root root    0 Nov  9 10:28 test01.sh

# 실행 권한이 없는 파일의 SetUID 설정
ls -al
-rw-r--r--. 1 root root    0 Nov  9 10:28 test01.sh

# SetUID 설정
chmod u+s test01.sh

ls -al
-rwSr--r--. 1 root root    0 Nov  9 10:28 test01.sh

 

SetGID(2000)

: 파일 생성 시 그룹 소유자가 생성자가 아닌 해당 디렉터리의 그룹 소유자로 설정된다.

 

# 현재 위치 확인
pwd
/

# test 디렉터리 권한 확인
ls -al
drwxrwxrwx.   2 root root    6 Nov  9 12:35 test

# SetGID 설정
chmod g+s /test

# SetGID 설정 확인(그룹 소유자의 실행 권한이 "s"로 표기)
ls -al
drwxrsrwx.   2 root root    6 Nov  9 12:35 test

# test 계정 전환
su - test

# /test 디렉터리 이동
cd /test

# 파일 생성
touch test01

# 파일 그룹 소유자 확인
ls -al
-rw-r--r--.  1 user root   0 Nov  9 12:39 test01

 

 

Sticky Bit(1000)

: 파일 및 디렉터리 소유자가 아닌 사용자들은 파일을 삭제하거나 수정을 할 수 없다.

공용 디렉터리 용도로 활용된다.

 

# 현재 위치 확인
pwd
/

# test 디렉터리 권한 확인
ls -al
drwxr-xrwx.   2 root root    6 Nov  9 12:48 test

# Sticky Bit 설정
chmod o+t /test

# SetGID 설정 확인(다른 사용자의 실행 권한이 "t"로 표기)
drwxr-xrwt.   2 root root    6 Nov  9 12:48 test

# test 계정 전환
su - test

# /test 디렉터리 이동
cd /test

# 파일 생성
touch test01

# 파일 권한 확인
-rw-r--r--.  1 test test   0 Nov  9 12:50 test01

# test01 파일에 다른 사용자에게 쓰기 권한 부여
chmod o+w test01

# 파일 권한 확인
-rw-r--rw-.  1 test test   0 Nov  9 12:50 test01

# test 계정 전환
su - test2

# /test 디렉터리 이동
cd /test

# test01 파일 삭제(에러 발생)
rm -rf test01
rm: cannot remove 'test01': Operation not permitted