Unix/Linux 특수권한

leesj·2021년 12월 21일
0

Infra

목록 보기
7/9
post-custom-banner
  • Unix/Linux 시스템의 공유 디렉터리 설정 및 특수 권한 설정

특수권한의 유형

setuid

setuid 설정된 파일은 실행시 소유자의 권한으로 전환
root 만 접근 할 수 있는 파일이나 명령에 대해, 일반 사용자로 접근하는 것이 기능상 필요한 경우

  • setuid 의 경우 root 의 권한을 얻어 실행되기 때문에 보안상 취약하기 때문에 가급적 setuid 가 설정된 파일은 최소로 유지하는 것이 권장된다.

setgid

setgid 설정된 파일은 실행시 소유 그룹의 권한으로 전환
일반 파일 그룹의 멤버가 파일 소유자의 그룹과 상관없이 디렉터리 내의 모든 파일에 접근이 필요한 공유 디렉터리에 유용

  • setgid 역시 setuid 와 마찬가지로 보안상 취약하기 때문에 최소로 유지 필요

sticky bit

sticky bit 가 설정된 디렉터리는 퍼미션이 777인 파일의 소유자만이 삭제 가능하며 수정이나 실행 읽기 생성은 모든 사용자에게 허용된다.

핵심은 777퍼미션을 갖는 디렉터리지만 파일을 만든 계정과 root 계정만 삭제 할 수 있다는 점이다.

특수권한 확인

Unix 시스템은 파일에 대한 권한 및 파일 종류를 나타내기 위해 16bit 를 사용하며 아래와 같은 의미를 가짐
4bit(파일 종류)3bit(특수권한)3bit(소유자 접근권한)3bit(그룹 소유자 접근권한)-3bit(기타 사용자 접근 권한)

이중 2번째 3bit 를 통해 특수권한을 확인하고 부여 할 수 있음

stat 명령어의 Access 항목 및 ls-al 을 확인해보면 파일 시스템 권한 확인가능

setuid 확인

$ stat test
  File: test
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d	Inode: 3408051     Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-12-21 13:27:50.333437618 +0900
Modify: 2021-12-21 13:27:50.333437618 +0900
Change: 2021-12-21 13:28:34.306955587 +0900
 Birth: -

$ ls -al test
-rwsr-xr-x 1 root root 0 Dec 21 13:27 test

setgid 확인

$ stat test
  File: test
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d	Inode: 3408051     Links: 1
Access: (2755/-rwxr-sr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-12-21 13:27:50.333437618 +0900
Modify: 2021-12-21 13:27:50.333437618 +0900
Change: 2021-12-21 13:29:12.596275893 +0900
 Birth: -
 
$ ls -al test
-rwxr-sr-x 1 root root 0 Dec 21 13:27 test

sticky bit 확인

$ stat tmp
  File: tmp
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: fd01h/64769d	Inode: 3670017     Links: 70
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-12-21 10:50:56.913827436 +0900
Modify: 2021-12-21 13:25:19.664236075 +0900
Change: 2021-12-21 13:25:19.664236075 +0900
 Birth: -
 
$ ls -al test
-rwxrwxrwt 1 root root 0 Dec 21 13:27 test

특수권한 검색

find /bin /usr/bin /sbin -perm -4000 -o -perm -4000 |xargs ls -l
find /bin /usr/bin /sbin -perm -2000 -o -perm -2000 |xargs ls -l
find /bin /usr/bin /sbin -perm -1000 -o -perm -1000 |xargs ls -l

특수권한 부여

//setuid
chmod 4755 setuid-prog
//setgid
chmod 2755 setgid-prog
//sticky bit
chmod -R 1777 /opt/mytmp

sticky bit 가 부여된 디렉터리내의 파일을 소유자 및 root 가 아닌 사용자가 수정 및 삭제 하려고 하는 경우 아래와 같이 작업 불가

$ mv test test2
mv: cannot move 'test' to 'test2': Operation not permitted

특수권한 회수

// setuid 회수
$ chmod u-s filename 
// setgid 회수
$ chmod g-s filename
// sticky bit 회수
$ chmod o-t filename name

참고자료

post-custom-banner

0개의 댓글