학습 가이드
#20주 실습 커리큘럼

권한 기초: chmod 숫자·기호 표기 완전 정복

_리눅스 실습 커리큘럼 9/40 · 권한과 사용자 (5주차)_

이번 편은 chmod 의 두 가지 표기인 숫자 표기(755)와 기호 표기(u+x)를 서로 바꿔 읽고 쓰는 법에 집중합니다. -rw-r--r-- 를 보면 바로 644 가 떠오르고, 요구사항에 적힌 숫자를 보면 결과 문자열을 미리 그릴 수 있게 되는 것이 목표입니다. 소유자·그룹을 먼저 정하고 디렉터리와 파일에 권한을 따로 적용하는 실무 절차는 Day 2. 파일·디렉터리 권한 표준 적용에서 다뤘으니, 기초는 이 글을 참고하세요.

권한 문자열 10칸을 읽는 순서

ls -l 의 첫 열은 10칸입니다. 첫 칸은 종류(d 디렉터리, - 일반 파일, l 링크)이고, 나머지 9칸은 3칸씩 소유자(u) · 그룹(g) · 기타(o) 순서입니다.

$ ls -ld /tmp/demo /tmp/demo/note.txt
drwxr-x--- 2 alice dev 4096 ... /tmp/demo
-rw-r----- 1 alice dev   12 ... /tmp/demo/note.txt
  • 파일에서 r 은 내용 읽기, w 는 수정, x 는 실행입니다.
  • 디렉터리에서 r 은 목록 보기, w 는 안에서 파일 생성·삭제, x 는 들어가기(cd)와 안의 파일 접근입니다. 디렉터리에 x 가 빠지면 안의 파일 권한이 넉넉해도 접근할 수 없습니다.

숫자 표기: 4·2·1 을 더한다

세 자리 숫자는 각각 u·g·o 한 묶음이고, 한 묶음은 r=4, w=2, x=1 의 합입니다.

| 숫자 | 기호 | 뜻 |
|---|---|---|
| 7 | rwx | 읽기·쓰기·실행 |
| 6 | rw- | 읽기·쓰기 |
| 5 | r-x | 읽기·실행 |
| 4 | r-- | 읽기만 |
| 0 | --- | 권한 없음 |

변환은 3칸씩 끊어서 더하면 됩니다.

  • rwx r-x --- → 7 5 0 → 750
  • rw- r-- r-- → 6 4 4 → 644
  • 반대로 640 → rw- r-- --- → -rw-r-----
chmod 640 /tmp/demo/note.txt
stat -c '%a %A %n' /tmp/demo/note.txt   # 640 -rw-r----- /tmp/demo/note.txt

숫자 표기는 세 묶음 전체를 덮어씁니다. 기존 권한이 무엇이었든 결과는 적은 숫자 그대로입니다.

기호 표기: 누구에게, 어떻게, 무엇을

기호 표기는 대상(u/g/o/a) + 연산(+ - =) + 권한(r/w/x) 형태입니다.

chmod u+x tool.sh        # 소유자에 실행 추가, 나머지는 그대로
chmod go-w shared.txt    # 그룹·기타에서 쓰기 제거
chmod u=rw,go=r memo.txt # 지정한 값으로 교체 → 644 와 같음
  • +, - 는 기존 권한을 일부만 수정합니다. 그래서 결과가 원래 상태에 따라 달라집니다.
  • = 는 해당 대상의 권한을 통째로 교체합니다. go= 처럼 비워 두면 권한 없음(0)입니다.
  • 요구사항이 drwx------ 나 -r--r--r-- 처럼 문자열로 주어지면, 3칸씩 끊어 숫자로 바꾸거나 = 로 그대로 옮기는 편이 +/- 보다 안전합니다.

stat 로 숫자를 대조하는 습관

눈으로 ls -l 을 읽는 것보다 stat -c %a 로 숫자를 뽑아 요구사항과 한 글자씩 비교하는 것이 정확합니다. SELinux 가 켜진 서버에서는 ls -l 권한 문자열 끝에 . 이 붙어 11칸처럼 보이는데, 권한과는 무관한 표시입니다.

stat -c '%a %A %n' /tmp/demo /tmp/demo/*

디렉터리와 그 안의 파일에 서로 다른 값이 요구될 때 -R 로 한 번에 적용하면 둘 중 하나가 반드시 틀어집니다. 대상별로 나눠 적용하는 방법은 Day 2 글에 정리돼 있습니다.

연계 실습으로 확인하기

  • 비공개 디렉터리 권한 설정 — 700·600 이 각각 어떤 문자열이 되는지, 디렉터리와 파일에서 x 의 유무가 왜 다른지
  • 실행 스크립트와 문서 권한 구분하기 — 실행 파일(755)과 문서(644)의 차이가 x 한 비트라는 점을 숫자로 읽기
  • 보안 로그 디렉터리 권한 설정 — 문자열로 주어진 요구사항(drwx------, -r--r--r--)을 숫자로 변환하고, 디렉터리와 안의 파일을 구분해 적용하기

다음 편

다음 편은 umask와 sticky bit: 기본 권한을 정책으로 입니다. 화·금요일에 이어집니다.

<!-- publish_key:linux-path-20w-p09-post -->

댓글 0

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.