리눅스 파일 및 디렉토리 권한

예전에 리눅스 파일 및 디렉토리 권한에 대해 정리해놓은게 있어서 올려봅니다~

-----------------------------------------------------------------------


위는 디렉토리 및 파일 권한에 대해서 탐구하기 위해 내가 실험해본 데이터이다.

결과를 정리해보겠다.

  1. 디렉토리
    1. 읽기(r) : 디렉토리 내의 directory/file list를 볼 수 있는 권한이다.
    2. 쓰기(w) : 디렉토리 내의 새로운 directory/file을 생성하거나 이미 존재하는 directory/file을 삭제 할 수 있는 권한이다.
    3. 실행(x) : 디렉토리에 관한 명령어를 실행 시킬 수 있는 권한이다. (예를 들어 어떤 디렉토리에 이 권한이 없으면  이 디렉토리로 cd 한다던지 아니면 이 디렉토리 내의 파일을 읽거나 실행 하는 등의 모든 행위가 금지된다.)
  2. 파일
    1. 읽기(r) : 파일을 읽을 수 있는 권한이다.
    2. 쓰기(w) : 파일을 수정하거나 파일을 삭제할 수 있는 권한이다.
    3. 실행(x) : 파일을 실행 할 수 있는 권한이다.

여기까지는 기본적인 디렉토리/파일의 rwx 권한에 대한 정리였다.
하지만 unix계열의 운영체제에는 권한에 특정한 flag를 설정할 수 있다.
바로 setuid, setgid, sticky bit 이다.

  1. setuid
    1. 파일 : 파일에 setuid가 걸려있으면 owner가 아닌 user가 파일을 실행할 때 owner의 권한으로 파일이 실행 된다.
    2. 디렉토리 : no meaning. 디렉토리에서 이 flag는 무시된다.
  1. setgid
    1. 파일 : 파일에 setgid가 걸려있으면 파일이 실행 될 때 파일의 소유 그룹의 gid로 실행된다.
    2. 디렉토리 : 디렉토리에 setgid가 걸려있으면 디렉토리 내에서 디렉토리나 파일을 생성했을 때 디렉토리의 group를 inherit해서 생성이 된다.
  1. sticky bit
    1. 파일 : 일부 unix 기반 os 일부 등에서 프로그램이 실행 될 때 memory cache등에 영향을 주는데 최근의 대부분 os에서는 의미 없다고 구글이 그러네요. 사실 이 부분은 나도 잘 모른다. 그냥 기본적으로는 권한에 관해서는 no meaning 이라고 생각해도 될 것 같다.
    2. 디렉토리 : 디렉토리에 sticky bit가 걸려있으면 디렉토리 내에서 777권한이 주어진 파일이더라도 디렉토리 owner와 파일 owner와 root를 제외하고는 파일을 삭제할 수 없다. 하지만 파일을 수정하는 것은 가능하다. (물론 파일에 w권한이 있을 때). 이 것을 활용하는 대표적인 예로 /tmp 폴더가 있다.

댓글