[Linux] 리눅스(CentOS7)

[Linux] 리눅스 특수 권한

ITsubin 2022. 3. 9. 00:06

이번 포스팅에서는 특수 권한에 대해 말씀드리겠습니다.

 

지난 Umask 관련 포스팅에서도 말씀드렸듯이 권한을 설정할 때 8진수 숫자 4자리 중 가장 앞의 숫자는 특수 권한을 설정하는 자리입니다.

 

권한을 8진수 숫자 3자리로 설정하면 일반 권한,

권한을 8진수 숫자 4자리로 설정하면 특수 권한까지 수정합니다.

 

chmod 명령어로 File의 퍼미션을 777로 설정한다면 아래 예시처럼 File의 퍼미션 값은 rwxrwxrwx가 됩니다.

[root@localhost test]# chmod 777 File ; ll | grep File
-rwxrwxrwx. 1 root root 0 38 23:30 File
[root@localhost test]#

 

그렇다면 퍼미션을 4777로 설정한다면 어떻게 될까요?

[root@localhost test]# chmod 4777 File ; ll | grep File
-rwsrwxrwx. 1 root root 0 38 23:30 File
[root@localhost test]#

 

네 바로 위 예제처럼 퍼미션의 소유자 권한 값에x 대신 s가 생겼습니다. (아래 표 참고)

  UID GID OTHER
파일 유형
(종류)
소유주 권한 그룹 권한 기타 사용자
권한
-, d, l, ... rwx => rws rwx rwx

 

이처럼 8진수 숫자 4자리 중 가장 앞자리의 숫자가 4라면 UID 값이 바뀌는 것을 확인할 수 있습니다.

GIDOTHER는 어떤 숫자가 들어가야 바뀌는지 아래 표로 먼저 간단히 보여드리겠습니다.

  UID GID OTHER
파일 유형
(종류)
소유주 권한 그룹 권한 기타 사용자
권한
-, d, l, ... rwx => rws rwx => rws rwx => rwt
특수 권한 넘버릭 4000 2000 1000
특수 권한 명령어 SetUID SetGID Sticky bit

 

앞자리 숫자가 4라면 UID, “2라면 GID, “1이라면 OTHER의 특수 권한을 수정합니다.

또한 UID, GID는 실행 권한인 x 대신 “s”, OTHER“t”로 바뀝니다.

 

UID의 특수 권한을 수정하는 명령어는 SetUID,

GID의 특수 권한을 수정하는 명령어는 SetGID,

OTHER의 특수 권한을 수정하는 명령어는 Sticky bit입니다.

 

따라서 특수 권한 명령어에는 SetUID, SetGID, Sticky bit이 있는 것을 알 수 있습니다.

 

[root@localhost test]# chmod 4777 File ; ll | grep File
-rwsrwxrwx. 1 root root 0 38 23:30 File
[root@localhost test]#

 

기존 권한에 실행 권한이 존재한다면 소문자 s(t), 실행 권한이 존재하지 않는다 대문자 S(T)로 구분됩니다.

 

[실행 시 소유자(UID) 권한 취득]

 

==SetUID== +4000

rwsrwxrwx 4777 => UID에 실행 권한 존재, 특수 권한 부여 시 s

=> rwxrwxrwx => +4000 => rwsrwxrwx

rwSrwxrwx 4677 => UID에 실행 권한 미존재, 특수 권한 부여 시 S

=> rw-rwxrwx => +4000 => rwSrwxrwx

 

[실행 시 그룹(GID) 권한 취득]

 

==SetGID== +2000

rwxrwsrwx 2777 => GID에 실행 권한 존재, 특수 권한 부여 시 s

=> rwxrwxrwx => +2000 => rwxrwsrwx

rwxrwSrwx 2767 => GID에 실행 권한 미존재, 특수 권한 부여 시 S

=> rwxrw-rwx => +2000 => rwxrwSrwx

 

 

[Sticky bit - 기타사용자 특수 권한]

 

- Others에 모든 허가권을 부여해도 소유자/root가 아니면 삭제는 할 수 없다.

- 주로 디렉터리만 설정한다.

 

==Sticky bit== + 1000

rwxrwxrwt 1777 => Others에 실행 권한 존재, 특수 권한 부여 시 t

=> rwxrwxrwx => +1000 => rwxrwxrwt

rwxrwxrwT 1776 => Others에 실행 권한 미존재, 특수 권한 부여 시 T

=> rwxrwxrx- => +1000 => rwxrwxrwT