리눅스 파일 권한: setuid, setgid, sticky bits
리눅스 파일 시스템은 파일의 보안과 권한을 관리하기 위해 다양한 기능을 제공한다.
그 중에서도 setuid, setgid, 그리고 스티키 비트는 특별한 권한 설정을 제공하여 보다 정교한 권한 관리를 가능하게 한다.
1. Setuid와 Setgid
Setuid (s 권한): setuid는 실행 파일에 설정할 수 있는 권한 중 하나로, 실행 파일이 특정 사용자의 권한으로 실행되도록 한다. 이를 통해 특정 사용자만이 파일에 대한 접근 권한이 있는 작업을 수행할 수 있게 한다.
Setgid (s 권한): setgid는 디렉토리에 설정할 수 있는 권한 중 하나로, 새로운 파일이 해당 디렉토리에 생성될 때 그 파일의 그룹을 디렉토리의 그룹으로 설정한다. 이를 통해 그룹 내에서 파일을 공유하고 협업하는 데 용이하다.
ex) Setuid
#ls -al /usr/bin/passwd
숫자로 나타내자면 5455이다.
- r (읽기 권한): 4 (2^2)
- w(쓰기 권한): 2(2^0)
- s (setuid): 4
- r (읽기 권한): 4
- x (실행 권한): 1
위의 passwd라는 파일은 root 권한을 가지고 있지만 누구든지 실행이 가능하고
실행 되는 동안에는 누구든지 root의 권한을 갖게 되는 것이다.
ex) Setgid
프로젝트 공유 디렉토리 설정을 통해 setgid 권한에 대해 알아 보겠다.
1. 디렉토리 "project"를 생성한다.
#mkdir project
#sudo chmod g+w project
폴더에 그룹에게 쓰기 권한을 부여한다.
2. 그룹을 추가하고 디렉토리 그룹을 "project_group"으로 변경하고, setgid 권한을 설정한다.
#sudo addgroup project_group
#sudo chown :project_group project
#sudo chmod g+s project
3. 그룹에 projectUser1 과 projectUser2를 추가 한다.
#sudo useradd projectUser1
#sudo useradd projectUser2
그룹에 projectUser1과 projectUser2를 추가한다.
#sudo usermod -aG project_group projectUser1
#sudo usermod -aG project_group projectUser2
4. projectUser1과 projectUser2가 "project" 디렉토리에 파일을 생성한다.
#su - projectUser1
#echo "Hello from user1" > project/file_user1.txt
#exit
#su - projectUser2
#echo "Hello from user2" > project/file_user2.txt
#exit
생성뒤에 파일의 그룹이 project_group으로 설정 되어 있음을 확인한다.
※ 그룹에 지정된 사용자가 파일을 생성하더라도 'setgid'를 설정하지 않은 디렉토리에서는 그룹 소유자가
해당 사용자의 기본 그룹을 설정 된다.
2. sticky bits
스티키 비트는 디렉토리에 설정할 수 있는 권한 중 하나로, 해당 디렉토리 내에서 파일을 삭제하는 권한을 제한한다. 주로 공용 디렉토리나 파일 공유 환경에서 사용되어, 모든 사용자가 파일을 생성할 수 있지만 본인이 생성한 파일만 삭제할 수 있는 기능을 제공한다.
t : 1(2^0)
공용 디렉토리인 /tmp 디렉토리에는 스티키 비트가 설정되어, 사용자가 생성한 파일만 삭제할 수 있다.
'시스템 관리 > 리눅스' 카테고리의 다른 글
4-4. 리눅스 사용자 및 권한 관리 사용자 생성 명령어 (0) | 2023.08.27 |
---|---|
리눅스 skel 디렉토리 란 (0) | 2023.08.27 |
4-2. 리눅스 사용자 및 권한 관리 Permission 명령어 chmod (0) | 2023.08.19 |
4-1. 리눅스 사용자 및 권한 관리 Permission (0) | 2023.08.19 |
3-3. 리눅스 프로세스 관리 명령어 top (0) | 2023.08.08 |