특수 권한 ( SetUID, SetGID, Sticky)
1.SetUID
1) 일반적으로 실행 파일에 적용하는 권한으로 SetUID가 설정된 실행 파일
2) 실행하게 되면 해당 파일을 실행한 사용자가 아닌 해당 파일을 소유한 소유자의 권한으로 프로세스가 실행 된다. ( root가 소유한 파일에 설정 )
설정방법
- 기호모드 u+s
- 숫자모드 4000
ex)
1) mkdir /practice/SetUID
2) cd /practice/SetUID
3) touch SetUID-1
4) touch SetUID-2
5) chmod 4755 SetUID-1 // rws r-x r-x -> 기존 허가권에 x 권한이 있으면 소문자 s
rwx r-x r-x
6) chmod 4655 SetUID-2 // rwS r-x r-x -> 기존 허가권에 x 권한이 없으면 대문자 S
rw- r-x r-x
SetUID-3 파일을 root 계정만 읽을 수 있도록 설정
ex)
chmod 400 SetUID-3
일반 사용자 계정으로 로그인하여 해당 명령어 실행
su - (일반사용자)
cat /practice/SetUID/SetUID-3
ll /bin/cat //명령어 cat 실행파일
exit
chmod u+s /bin/cat //cat 파일에 SetUID 설정
ll /bin/cat
일반 사용자 계정으로 로그인하여 해당 명령어 실행
su - (일반사용자)
cat /practice/SetUID/SetUID-3
go home <<<<<<<<<<<<<<<<<<
/bin/cat 실행 파일(명령어)이 프로세스로 동작할 때 현재 로그인 한 사용자의 권한이 아닌 해당 파일의 소유자권한(root) 으로 실행되어 허가권이 없는 파일임에도 내용을 확인 가능
/bin/cat 허가권 원상복구
1) chmod u-s /bin/cat
2) SetUID는 사용을 잘 하면 시스템 운영에 큰 도움이 되지만, 자칫하면 보안에 큰 위험이 될 수 있는 설정이다.
# root 권한으로 실행되기 때문에
2. SetGID
1) 파일을 소유한 그룹의 권한으로 실행
2) 파일에는 설정하지 않으며, 디렉토리에 설정
설정방법
- 기호모드 g+s
- 숫자모드 2000
mkdir /practice/SetGID
cd /practice/SetGID
touch FILE1
ll 소유권 필드 확인 (root root)
chmod 2755 /practice/SetGID // 테스트 디렉토리에 SetGID 설정 확인
ll /practice/ // SetGID 디렉토리 허가권 확인
// 원본 rwx r-x r-x
// 설정 후 rwx r-s r-x
chown root:BLACKPINK /practice/SetGID // 테스트 디렉토리의 소유권 변경
ll /practice/
[USER] [GROUP]
touch FILE2 //파일 생성
touch FILE3
ll
파일을 생성한 계정의 그룹 소유권으로 생성되는 것이 아니라, SetGID가 설정 된 디렉토리의 소유 그룹의 권한으로 파일이 생성된다.
팀단위 작업 시 같은 그룹에 속한 사용자들끼리 파일을 공유하도록 하고자 할 때 설정한다.
3. Sticky
1)파일에 사용 할 수 있는 권한이나 현재는 사용하지 않으며, 모든 사용자가 생성, 쓰기, 삭제 등 모든권한이 적용되어 있는 디렉토리에 설정한다.
2)Sticky가 설정된 디렉토리 내에서는 해당 파일을 소유한 사용자만이 해당 파일을 삭제할 수 있다.
설정방법
-기호모드 o+t //기타 사용자 필드에 t 추가
-숫자모드 1000
ex)
mkdir /practice/temp1
mkdir /practice/temp2
touch /practice/temp1/sticky_test
touch /practice/temp2/sticky_test
chmod 1777 /practice/temp1 // Sticky 적용된 디렉토리
chmod 777 /practice/temp2 //
drwxrwxrwt. 2 root root 4096 2020-06-23 16:43 temp1
drwxrwxrwx. 2 root root 4096 2020-06-23 16:43 temp2
chmod 777 /practice/temp1/sticky_test // 허가권 변경
chmod 777 /practice/temp2/sticky_test
su - (일반사용자)
cd /practice/temp2
ll // (rwx rwx rwx)
rwx rwx rwx root root sticky_test
echo "test" >> sticky_test
cat sticky_test
rm sticky_test // 허가권이 있기 때문에 삭제 가능
cd /practice/temp1
ll
rwx rwx rwx root root sticky_test
echo "test" >> sticky_test
cat sticky_test
cat sticky_test
rm sticky_test // 삭제만큼은 해당 파일을 소유한 계정만 가능
rm:cannot remove 'sticky_test' : 명령을 허용하지 않음
'Server > Linux' 카테고리의 다른 글
Linux // 파일 속성 (0) | 2018.02.02 |
---|---|
Linux // sudoers (0) | 2018.02.01 |
Linux // UMASK (0) | 2018.01.30 |
Linux // 권한 (0) | 2018.01.26 |
Linux // 비밀번호 일괄변경 (0) | 2018.01.24 |