SetUID/GID
- SetUID: 파일 실행시 프로세스를 사용자의 ID 가 아닌 파일 소유자의 ID 로 실행
- SetGID: 파일 실행시 프로세스를 사용자의 그룹 ID 가 아닌 파일의 그룹 ID 로 실행
용도
사용자에게 없는 권한을 프로그램에 부여
일반적으로 특정 명령어를 루트 권한으로 실행할 때 사용
Warning권한 확대로 이어질 수 있기 때문에
권한을 세밀히 나눈 capability 을 사용하는 것이 보안적으로 유리
설정 및 해제
1# setuid
2## set
3chmod u+s my_binary
4chmod 4___ my_binary
5## unset
6chmod u-s my_binary
7
8# setgid
9## set
10chmod g+s my_binary
11chmod 2___ my_binary
12## unset
13chmod g-s my_binary
14
15## rwx 에서 x 부분이 s 로 표시
User ID
- UID (User ID): 사용자에게 부여된 고유 ID 번호
- Login name: UID와 매핑되는 문자 형태의 사용자 이름
프로세스 관점
- Real user ID
- 최초 프로세스를 실행한 사용자의 UID
- Effective user ID (EUID)
- 현재 프로세스가 행사하는 UID
- 프로세스가 가진 권한 판단에 사용
- 기본적으로 Real UID 와 동일
- Saved user ID (SUID)
- 프로세스 최초의 effective user ID
- 원래의 EUID로 돌아가기 위해 사용
- setuid 실행 파일을 실행할 때 이전 EUID를 저장
setuid
파일 실행 시 해당 파일의 소유자의 UID가 프로세스의 effective UID가 됨
e.g. root 소유의 setuid 파일을 일반 사용자가 실행하면 해당 프로세스는 root 권한을 얻음
Sticky bit
디렉토리 내 파일의 삭제 권한을 제한
파일 소유자, 디렉토리 소유자, 또는 root 사용자만이
파일을 삭제 및 이름 변경이 가능
파일명 변경기존 파일을 디렉토리 엔트리에서 제거하고
새 이름으로 다시 링크하는 작업
- 파일 생성: 가능
- 파일 수정: 파일에 대해
write권한이 있으면 가능
설정 및 해제
1# set stickybit
2## set
3chmod +t /testdir
4chmod 1___ my_binary
5## unset
6chmod -t /testdir
7
8## rwx 에서 x 부분이 t 로 표시
디렉토리에서의 권한
| 권한 | 디렉토리에 적용될 때 |
|---|---|
r (읽기) |
ls 명령어로 디렉토리 목록을 볼 수 있음 |
w (쓰기) |
디렉토리 내부에서 파일 생성, 삭제 가능 |
x (실행) |
디렉토리로 접근 가능 (cd 실행 가능) |