Linux 파일 권한 메모

✍🏼 작성일 2019년 09월 28일   
❗️ 참고: 이 글이 작성된 지 이미 일이 지났습니다. 시의성에 유의하세요
🖥  설명:이 글은 Linux 기초를 배우던 당시 작성한 블로그 포스트로, 오래된 WordPress 블로그에서 옮겨온 것입니다.

서문

커맨드 라인을 자주 사용하는 분들은 파일 앞에 -rw-r--r--과 같은 10자리의 문자열을 본 적이 있을 겁니다. 이는 현재 파일/폴더에 대한 다양한 사용자 그룹의 권한을 나타냅니다. 예를 들어:

1
2
3
4
drwxr-xr-x   9 x  staff   288  9 25 23:37 .
drwxr-xr-x 15 x staff 480 9 24 23:48 ..
drwxr-xr-x 16 x staff 512 9 26 08:18 .git
-rw-r--r--@ 1 x staff 68 9 13 00:34 README.md

아래에서 왼쪽부터 오른쪽으로 차례대로 설명하겠습니다.

위치 및 문자 의미

  1. 첫 번째 문자는 현재 파일이 폴더인지 파일인지 나타냅니다. 파일인 경우 -, 폴더인 경우 d, 심볼릭 링크인 경우 l로 표시됩니다.
  2. 2~4번째 문자는 파일 소유자의 권한을 나타냅니다. 즉, 파일 생성자의 권한입니다.
  3. 5~7번째 문자는 파일 소유 그룹에 속한 사용자의 권한을 나타냅니다.
  4. 8~10번째 문자는 현재 그룹을 제외한 다른 사용자의 권한을 나타냅니다.
  5. 2~4번째, 5~7번째, 8~10번째 문자는 각각 3자리로 구성된 권한 정보를 나타냅니다:
    1. 첫 번째 문자는 r로 표시되며, read 권한을 의미합니다. 숫자로는 4, 이진수로는 100으로 표현됩니다. 해당 권한이 없을 경우 -로 표시됩니다.
    2. 두 번째 문자는 w로 표시되며, write 권한을 의미합니다. 숫자로는 2, 이진수로는 010으로 표현됩니다. 해당 권한이 없을 경우 -로 표시됩니다.
    3. 세 번째 문자는 x로 표시되며, execute执行 권한을 의미합니다. 숫자로는 1, 이진수로는 001으로 표현됩니다. 해당 권한이 없을 경우 -로 표시됩니다.
  6. root 사용자는 항상 모든 권한을 갖습니다. 즉 rwx로, 숫자로는 777(각 자릿수를 더한 4 + 2 + 1), 이진수로는 111로 표현됩니다.

예시

-r-xrwxr--는 현재 파일이며, 파일 소유자는 읽기와 실행 권한이 있지만 수정할 수 없음을 나타냅니다. 파일 소유 그룹의 다른 사용자들은 읽기, 수정, 실행이 가능하고, 다른 사용자들은 읽기만 가능하며 수정과 실행은 불가능합니다.

기본 사용법

chmod hello.js 파일을 읽기, 쓰기, 실행 가능하도록 변경하는 방법: chmod 777 hello.js 또는 chmod rwx hello.js

기타

숫자로 권한을 표현하는 경우(숫자 표현은 문자 표현의 최상위 -/d/l 정보를 포함하지 않음) 네 자리 숫자로도 표현할 수 있습니다. 즉 권한 앞에 한 자리를 추가하는 것으로, 예를 들어 0777과 같습니다. 여기서 최상위 자리의 0은 suid와 guid 개념을 나타냅니다:

  1. suid는 해당 스크립트를 실행하는 사용자(실행 권한이 있는 경우)가 파일 소유자의 권한을 갖게 됨을 의미합니다. 숫자 7로 표현됩니다.
  2. guid는 해당 스크립트를 실행하는 사용자가 파일 소유 그룹의 권한을 갖게 됨을 의미합니다. 숫자 5로 표현됩니다.

suid를 설정하려면 0을 4로 변경하고, guid를 설정하려면 0을 2로 변경합니다: 4777과 2777, 또는 둘 다 설정하려면 6777로 표현합니다.

- EOF -
이 글의 최초 게시: Linux 파일 권한 메모 - Xheldon Blog