본문 바로가기
CS

리눅스 권한 유형 - setuid, setgid 그리고 sticky bit 의 개념 그리고 파일권한 대/소문자 s 의 의미

by Warehaus 2022. 4. 10.


등잔밑이 어둡다더니..
너무나 자주 봐 오던 권한의 의미를 가끔 정확하게 기억하지 못하는 경우가 생겨서 간단히 정리해 본다.

리눅스 권한


모든 리눅스 파일은 소유자 권한 그리고 File access mode를 갖는다.

File access mode 는 리눅스에서 파일을 보호하기 위한 기본적인 설정이며, 각 문자는 아래의 의미를 갖는다.

r : 읽기 권한. 파일의 내용을 볼 수 있다.
w : 쓰기권한. 파일읠 수정하고 삭제 가능하다.
x : 실행권한. 프로그램으로서 파일을 실행 할 권한을 갖는다.


그리고 모든 리눅스 파일은 아래 속성의 permission을 가지고 있다.

  • Owner permissions : 소유자의 권한. 소유자가 갖는 해당 파일의 권한을 의미
  • Group permissions : 그룹 권한. 해당 파일의 그룹에 속하는 사용자가 갖는 권한.
  • Other permissions : 소유자, 그룹 외 사용자에게 적용되는 파일권한.


리눅스에서 파일을 명령어로 조회하면 아래처럼 권한이 나오는 것을 확인할 수 있다.
아래 파일의 경우 Owner, Group permission 은 read/write 이고 Other permission 은 r-- (Read) 이다.

$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Apr 10 10:08 testfile


기본적인 파일 권한체계는 File access mode와 Owner 관리로 이루어 지는데, 그 외에 특수한 권한체계가 있다.

SUID, SGID 파일권한

간혹 특정 프로그램을 실행할 때, 해당 프로그램의 수행을 위해 특별 권한이 필요한 경우가 있다.
가장 많이 드는 예시가, passwd 명령어인데, passwd명령으로 비밀번호를 변경하게 되는 경우 새로운 password 는 /etc/shadow에 저장이 되어야 하며, 이를 위해서는 추가적인 권한이 필요하다.

이때 사용하는 권한이 Set UID(SUID)/ Set GID(SGID) 권한이다.

SUID 가 없는 프로그램은 실행한 사용자의 권한으로 수행되지만, Set UID 설정이 되어있는 파일을 실행하는 경우, 프로그램을 실행한 사용자는 프로그램의 owner 권한으로 실행하게 된다.

그리고, SGID 설정이 된 파일을 실행하는 경우 이를 실행 한 사용자의 권한으로 실행되지 않고 Group 계정으로 변경되어 프로그램이 실행되게 된다.

Set UID, Set GID를 설정하는 명령어는 다음과 같다.
아래 예시는 동시에 설정하는 예시이다.

chmod ug+s tesfile
$ ls -l
total 0
-rwSrwSr-- 1 ubuntu ubuntu 0 Apr 10 10:08 testfile


위에 결과를 보면 File access mode가 대문자 S 로 보여진다.

이는 파일의 access mode가 실행모드를 포함하지 않기 때문이며, 실행권한을 부여하면 아래처럼 testfile 의 File access mode 가 소문자 's' 로 변경된 것을 확인할 수 있다.

$ chmod 775 testfile
ubuntu@ip-172-31-40-13:~$ ls -l
total 0
-rwxrwxr-x 1 ubuntu ubuntu 0 Apr 10 10:08 testfile



참고자료 : https://www.tutorialspoint.com/unix/unix-file-permission.htm

Unix / Linux - File Permission / Access Modes

Unix / Linux - File Permission / Access Modes In this chapter, we will discuss in detail about file permission and access modes in Unix. File ownership is an important component of Unix that provides a secure method for storing files. Every file in Unix ha

www.tutorialspoint.com