linux) setuid/gid & sticky bit

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 실행 가능)

Reference


포스트
카테고리
시리즈