리눅스 운영체제에서는 소유권(Ownership)과 허가권(Permission)을 가지고 있다. 리눅스 운영체제를 사용하는데 있어 매우 중요한 개념이기 때문에 정리하려 한다.

허가권(Permission)

리눅스 운영체제에서 파일과 디렉토리 목록을 보기 위해 ls 명령어를 사용한다.

이때, -al 옵션을 주어 전체 목록을 확인 해 보면 아래와 같은 형태를 확인할 수 있다.

1
2
3
-r-sr-x---  1 user guest   7322 Jun 11  2014 file  
-rw-r--r--  1 root   root  418 Jun 11  2014 code.c  
-r--r-----  1 user root   50 Jun 11  2014 textFile  

여기서 앞의 r, w, x 형태로 나타난 부분이 바로 허가권(Permission) 이다.

  • -rwxrwxr-x : 파일 (맨 앞이 -)
  • drwxrwxr-x : 디렉토리 (맨 앞이 d)

허가권에서 r, w, x 는 각각 read(읽기), write(쓰기), execute(실행, 접근) 을 의미한다.

  • File Type : 디렉토리와 파일을 구분
  • User : 소유자의 권한
  • Group : 소유 그룹의 권한
  • Others : 소유자나 소유 그룹에 포함되지 않는 사용자의 권한
권한 표시 파일 디렉토리 Octal 값
읽기 r 파일을 읽고 복사 가능 ls 명령어를 통해 디렉토리의 목록 확인 가능 4
쓰기 w 파일의 내용 수정 가능 디렉토리에 파일을 추가 혹은 삭제 가능 2
실행 x 실행 가능한 파일을 실행 가능 cd 명령어로 디렉토리 접근 가능 1

소유권(Ownableship)

아래의 예시에서 파일의 허가권 옆에 user, guest, root 등으로 나타난 부분이 소유권이다.

1
2
3
-r-sr-x---  1 user guest   7322 Jun 11  2014 file  
-rw-r--r--  1 root   root  418 Jun 11  2014 code.c  
-r--r-----  1 user root   50 Jun 11  2014 textFile  

앞 부분이 해당 파일의 소유자이며, 뒷 부분은 소유 그룹이다.

1
-r-sr-x---  1 user guest   7322 Jun 11  2014 file  

위에서 userfile 파일의 소유자이며, guestfile 파일의 소유 그룹이 된다.

SetUID / SetGID

그런데 예시를 살펴 보면, 파일의 허가권에 x가 아닌 s가 나타나 있는 부분이 있다.

> -r-sr-x---  1 user guest   7322 Jun 11  2014 file  

바로 SetUID가 설정되어 있는 것이다.

  • SetUID : 사용자가 사용을 할 때만 소유자의 권한으로 파일을 실행함
  • SetGID : 사용자가 사용을 할 때만 그룹의 권한으로 파일을 실행함
    표기는 x 대신 s를 사용

위의 예시에서는 앞의 User 의 허가권 부분에 SetUID가 걸려 있다. 따라서 file을 실행하는 동안에는 소유자의 권한으로 파일을 실행하게 된다. 만약 파일의 소유자가 root인 파일에 SetUID가 걸려 있다면, 일반 사용자가 해당 파일을 실행하는 동안에는 root의 권한을 사용할 수 있다.