리눅스 특수권한(SetUID, SetGID, Stickybit)

| 2018년 5월 23일 | 0 Comments

안녕하세요 기술지원팀 김채린입니다.

리눅스 특수권한에 대해 살펴보겠습니다.

리눅스는 보통 사용자와 파일에 권한을 부여해 가장 기초적인 보안 체계를 이룹니다.

일반적으로 파일이나 디렉토리에는 user, group, other 권한이 존재하고

각각 읽기, 쓰기, 실행 권한을 부여할 수 있습니다.

이런 일반 권한 이외에도 리눅스에는 특수권한이란 것이 존재합니다.

 

  • SetUID

SetUID가 설정된 파일을 실행할 때 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있도록 합니다. 

예를들어 root 권한으로 지정된 프로그램에 SetUID가 지정되어 있다면 실행할 때 root 권한으로 실행됩니다.

SetUID를 적용하기 위해서는 기존의 허가권 앞에 4를 붙이면 됩니다.

ex) # chmod 4644 파일이름

<기존 권한에 실행권한이 없으면 대문자 S, 있으면 소문자 s로 표시됩니다.>

 

SetUID가 적용되어 있는 파일 중 가장 대표적인 것은 /usr/bin/passwd 파일입니다.

해당 파일은 계정의 비밀번호를 변경할 수 있도록 하는 명령어 실행 파일로

/etc/passwd로 접근하여 비밀번호를 변경하도록 합니다.

실제 /etc/passwd의 권한은 소유주인 root만이 변경이 가능하도록 설정이 되어있습니다.

만약 /usr/bin/passwd에 SetUID가 적용되어있지 않다면 일반 사용자들은 

항상 관리자를 거쳐 자신의 비밀번호를 변경해야합니다.

이런 번거로움을 줄이기위해 일반 사용자들도 root의 권한으로 /etc/passwd 파일을 수정 가능하도록 설정한 것입니다.

 

  • SetGID

 SetUID와 마찬가지로 SetGID가 설정된 파일을 실행할 때 일시적으로 파일 소유그룹의 권한을 얻어 실행하도록 합니다.

SetGID를 적용하기 위해서는 기존의 허가권 앞에 2를 붙이면 됩니다.

ex) # chmod 2644 파일이름

<기존 권한에 실행권한이 없으면 대문자 S, 있으면 소문자 s로 표시됩니다.>

 

  • Sticky Bit

Sticky Bit가 설정된 디렉토리에 파일을 생성하면 해당 파일은 생성한 사람의 소유가 되며

소유자와 root만이 해당 파일에 대한 삭제 및 수정에 대한 권한을 가질 수 있습니다.

즉, Sticky Bit가 설정된 디렉토리안에 누구나 파일을 생성할 수는 있지만 삭제는 본인과 관리자만 가능하게 되는겁니다. 

Sticky Bit를 적용하기 위해서는 기존의 허가권 앞에 1를 붙이면 됩니다.

ex) # chmod 1644 디렉토리이름

<기존 권한에 실행권한이 없으면 대문자 T,  있으면 소문자 t로 표시됩니다.>

 

 

일반적으로 유닉스 운영체제는 파일이나 디렉토리의 소유자, 소유그룹만이 삭제, 수정을 할 수 있도록 권한을 지정하지만

모든 사용자들이 파일 생성, 수정, 삭제 할 수 있는 디렉토리가 있습니다. 

/tmp와 /var/tmp 디렉토리는 모든 사용자가 사용하는 공용 디렉토리입니다.

그렇다보니 파일의 소유자가 아닌 다른 사용자가 777권한인 파일을 삭제, 수정하는 부분에서 문제가 발생하게 됩니다.

이를 방지하기 위해 Sticky Bit를 설정하여 공용 디렉토리라 하더라도

그 파일의 소유자와 관리자만이 삭제, 수정 권한을 가질 수 있습니다.

 

  • 참고로 특수 권한은 해당 자리의 기존 권한에 실행 권한이 있어야 정상적으로 적용이 됩니다.

 

Category: LINUX

About the Author ()