본문 바로가기
서버/Linux

[Linux] UMASK & 특수 허가권 (SetUID, SetGID, StickyBit)

by 느링 2017. 10. 11.

디렉토리에 대한 허가권 테스트

디렉토리에 권한이 없으면 하위 파일의 권한이 있더라도 사용할 수 없습니다.

★파일 허가권보다 디렉토리의 허가권이 우선 순위가 높습니다.

<예제 1>

TEST 디렉터리와 그 안에 file 생성 후

file을 모두에게 읽기, 쓰기, 실행 권한을 허가하고 file 안에 "hello world"를 넣어준다.

TEST 디렉터리는 사용자(root)만 읽기, 쓰기, 실행 권한이 허가된다.

test-user 계정으로 /TEST/file의 내용을 확인하면 허가가 거부되는 것을 볼 수 있다.

 

※ file 파일은 기타 사용자도 모든 권한을 허가했지만,

/TEST디렉터리의 허가권이 우선 순위가 높기 때문에 /TEST디렉터리가 허가하지 않는다면

file 파일의 내용은 볼 수 없습니다.

+--------------------------------------------------------------------------------------------------+

1. UMASK

- 파일이나 디렉토리를 생성할 때 가지게 되는 기본 허가권을 결정하는 기준이 되는 값

- 시스템에 설정되어있는 기본 UMASK 값 (022)

 

파일 기본 허가권                666  rw- rw- rw-

디렉토리 기본 허가권          777  rwx rwx rwx

 

# umask

현재 로그인한 사용자에게 적용되어있는 UMASK 값 확인

0022 == 022 (기본 값)

 

2. 특수 허가권 (SetUID, SetGID, Sticky)

 

① SetUID ★★

- 소유자만 접근 가능한 파일에 일반 유저로 접근이 필요할 때 사용됩니다.

- User 권한의 접근 권한 x 자리에 x → s가 들어가면 이를 SetUID라고 합니다.

- 권한을 읽을 때는 맨 앞에 숫자 4를 붙여서 읽습니다. (ex. rws rwx rwx = 4777)

 

설정방법

기호모드 u+s

숫자모드 4000 → 100 000 000 000

 

② SetGID

- 소유 그룹만 접근 가능한 파일에 일반 유저로 접근이 필요할 때 사용합니다.

- Group 권한의 접근 권한 x자리에 x → s가 들어가면 이를 SetGID라고 합니다.

- 만약 s 대신 S(대문자)가 들어가면 이는 일반 권한의 -(접근 권한 없음)과 같은 의미입니다.

- 파일에는 설정하지 않으며 디렉터리에 설정합니다.

- 권한을 읽을 때는 맨 앞에 숫자 2를 붙여서 읽습니다. (ex. rwx rws rwx = 2777)

 

설정방법

기호모드 g+s

숫자모드 2000 → 010 000 000 000

 

③ StickyBit

- 파일 및 디렉토리 생성은 누구나 가능하지만, 삭제는 생성한 유저와 디렉토리 소유자만 가능합니다.

- Other 권한의 접근 권한 x자리에 x → t가 들어가면 이를 StickyBit라 칭합니다.

- 만약 t 대신 T(대문자)가 들어가면 이는 일반 권한의 -(접근 권한 없음) 과 같은 의미입니다.

- 권한을 읽을 때 맨 앞에 숫자 1을 붙여서 읽는다. (ex. rwx rwx rwt = 1777)