티스토리 뷰
특수 권한 비트 SetUID & SetGID
SUID
Set UID의 약자
프로세스가 실행중인 동안 일시적으로 해당 실행 파일의 소유자, 소유그룹의 권한으로써 자원에 접근할 수 있도록하는 권한 설정
즉, SUID가 설정된 프로그램을 실행시키면 프로세스로 동작하는 동안에 RUID는 실행시킨 사용자의 UID로 설정되고 EUID는 실행파일 소유자의 UID로 설정된다.
따라서 실행시킨 사용자(user)와는 무관하게 프로세스가 실행중인 동안에는 실행파일 소유자의 권한으로 자원에 접근하게 된다.
SGID
Set GID의 약자
SUID로인해 RUID와 EUID가 해당 UID로 설정되는것과 같이, SGID로 인해 RGID와 EGID가 해당 GID로 설정된다.
이러한 SGID가 설정되지 않은 프로세스를 실행시키면 RUID와 EUID, RGID와 EGID가 동일하게 설정된다.
즉, 프로세스를 실행시킨 사용자의 UID와 GID로 RUID, EUID와 RGID, EGID가 설정되어 해당 권한으로 자원에 접근하게 되는 것이다.
예제:
만약 패스워드를 변경한다고 쳤을떄,
passwd
리눅스의 패스워드 파일인 /etc/shadow 에 저장된다.
그렇지만 /etc/shadow 파일의 퍼미션은 다음과 같이 되어있다.
\-rw------- 1 root root 24736 Oct 23 17:54 /etc/shadow
others 는 아무 권한이 없는 상태이다. 그런데 어떻게 A라는 계정 사용자가 명령을 내려서 /etc/shadow 파일이 갱신이 될 수 있을까?
ls -al /bin/passwd
\-rws--x--x 1 root root 32888 Mar 11 2009 /bin/passwd
소유주의 실행 권한이 S 로 되어있는데, 이것이 SetUID를 나타내는 것이며, 시스템의 어떠한 계정이라도 /bin/passwd 파일을 실행하는 동안에는 소유주 즉 root의 권한을 갖는다는 의미이다.
다만 root 권한이 필요 없는 프로그램에 소유주가 root로 되어 있으면서 setuid가 설정된 경우는 보안상 매우 취약할 수 있기에 이런 이유로 관리자는 SUID, SGID가 설정된 프로그램을 주기적으로 확인할 필요가 있으며 SetUID,SetGID권한은 일반 사용자가 특정사용자나 그룹의 권한을 갖을 수 있으므로 잘못 설정할 경우에는 아주 위험한 경우들이 생겨나므로 조심해야할 것 같다.
- Total
- Today
- Yesterday
- 로드밸런서
- stable diffusion
- 멀티레포
- 디스코드 봇
- 형상 관리
- load balance
- tauri
- Kubernetes
- oauth2
- monorepo
- MLOps
- Polyrepo
- 소프트웨어 방법론
- spring boot
- 토이 프로젝트
- context7
- Microservice
- 회원 테이블
- discord bot
- load balancing
- vae
- spring cloud config
- Embedding
- springboot
- Hypernetwork
- 분산 처리
- Multirepo
- 모노레포
- Textual Inversion
- Spring cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |