일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Hash
- two pointer
- Dijkstra
- binary search
- 그래프
- 스토어드 프로시저
- union find
- Stored Procedure
- 이진탐색
- Trie
- DP
- Brute Force
- String
- MYSQL
- 다익스트라
- SQL
- Two Points
- Today
- Total
codingfarm
특수 접근 권한 SetUID, SetGID 본문
특정파일의 접근권한을 알고 싶을때 우리는 ls -l 명령어를 사용하며 기본접근 권한을 알고 싶을땐 umask를 쓴다.
이런 명령어를 통해 파일들의 유저, 그룹, 다른 사용자들에 대한 접근권한과 기본 접근 권한에 대해 알 수 있다.
하지만 리눅스에는 일반적인 접근 권한 외에 특별한 접근 권한을 제공하는데, 이를 특수 접근 권한 이라 한다.
가령 umask를 실행해보자.
맨 앞자리에 있는 숫자가 특수 접근 권한을 나타낸다.
맨 앞자리의 수가 1,2,4 중 어떤 수를 가지느냐에 따라 특수 접근 권한이 설정된다.
0 : 일반적인 접근 권한
1 : 스티키 비트(sticky bit)
2 : SetGID
4 : GetUID
숫자 | 권한 종류 |
0 | 일반적인 접근 권한 |
1 | 스티키 비트(sticky bit) |
2 | SetGID |
4 | SetUID |
각 특수접근 권한이 어떤 특징을 지녔는지 살펴보자.
1. SetUID
1.1 정의
- SetUID가 설정된 파일을 실행하면, 해당 파일이 실행되는 동안에는 일시적으로 파일의 소유자 권한을 얻게 된다.
- 파일 소유자의 실행권한이 s로 표기된다.
대표적으로는 /usr/bin/passwd 명령이 SetUID 접근권한을 지니고 있다.
소유자의 실행 권한이 s로 표기된것을 볼 수 있다.
왜 실행 되는동안 일시적으로 소유자의 권한을 바꾸는 위험한 작업을 하는것일까?
passwd 명령은 사용자 계정의 암호를 바꾼다. 이때 계정의 암호가 저장되어 있는 /etc/shadow 파일을 수정하는데 이 파일의 수정은 root 계정으로만 가능하다.
파일의 소유자(root)에게만 write권한이 있는것을 볼 수 있다.
즉, 계정의 암호를 바꿀 수 있는 권한을 가지는것은 root 뿐이므로 passwd 명령을 통해 /etc/shadow 파일을 수정하기 위해선 root와 같은 권한을 가질 필요가 있다.
그러므로 /usr/bin/passwd 명령을 수행하기 위해서는 실행자의 권한을 root와 똑같이 만들어야 하므로 SetUID 접근 권한을 설정하였다.
1.2 설정방법
1. 숫자모드(4XXX)
chmod 명령어 사용시 접근권한 설정 명령어 부분에 '4'를 추가한다.
보다시피 set.exe에 SetUID 권한이 설정된것을 볼 수 있다.
2. 기호모드(*+s)
1.3. SetUID 설정된 파일 찾기
- find 명령어를 사용하면 된다.
find <검색할 디렉토리> -user <소유자> -perm <접근권한>
find . -user crow -perm -4000
1.4 특수 접근 권한 설정 오류
- 파일에 특수 권한을 설정하기 위해선 파일이나 디렉터리 모두 실행 권한을 가지고 있어야 한다.
- 그렇지 않은 파일에 SetUID나 SetGID를 설정하면 's'가 아니라 'S'가 표시된다.
- 그렇지 않은 디렉터리에 스티키 비트를 설정하면 't'가 아니라 'T'가 표시된다.
이렇듯, 대문자 S나 T가 나타나면 특수 접근 권한을 잘못 설정한 것이다.
2. SetGID
- SetGID가 설정된 파일을 실행하면, 해당 파일이 실행되는 동안에는 일시적으로 파일의 소유그룹의 권한을 얻게 된다.
SetGID가 설정된 파일은 소유그룹의 실행 권한이 s로 표시된다.
나머지는 SetUID와 유사하다.
3. 스티키 비트
- 스티키비트는 디렉터리에 설정하며, 디렉터리에 스티키 비트가 설정되어 있으면 이 디렉터리에는 누가나 파일을 생성할 수 있다.
- 파일은 파일을 생성한 계정으로 소유자가 설정되고, 다른 사용자가 생성한 파일은 삭제할 수 없다.
대표적으로 /tmp 디렉터리가 스티키 비트 설정되어있다.
스티키 비트가 설정된 디렉터리는 다른 사용자의 실행권한이 t로 표시된다.
이러한 특수 권한들은 보안에 취약점을 가지고 있으므로 주의해야한다.
'Linux > Ubuntu' 카테고리의 다른 글
프로세스 - 포그라운드와 백그라운드 (0) | 2021.03.06 |
---|---|
프로세스 관리 - 개념, 관리 도구 (0) | 2021.03.06 |
입출력 방향 바꾸기 (0) | 2020.11.15 |
shell (0) | 2020.11.04 |
vi (0) | 2020.11.03 |