chmod 권한이란 — 755·644 숫자의 의미
리눅스에서 파일을 다루다 보면 chmod 755, 644 같은 세 자리 숫자를 자주 만납니다. 외계어처럼 보이지만 규칙은 단순합니다 — 세 부류의 사용자에게 세 가지 권한을 주느냐 마느냐를 숫자 하나로 압축한 것뿐입니다. 구조만 잡으면 어떤 값이든 바로 읽을 수 있습니다.
누구에게 · 무엇을
권한은 항상 세 부류에게 따로 매겨집니다 — 소유자(user), 그룹(group), 기타(others, 나머지 모두). 그리고 각 부류가 가질 수 있는 권한도 세 가지입니다.
| 권한 | 기호 | 파일에서 | 디렉터리에서 |
|---|---|---|---|
| 읽기 | r | 내용 보기 | 목록 보기(ls) |
| 쓰기 | w | 내용 수정 | 파일 생성·삭제 |
| 실행 | x | 프로그램 실행 | 안으로 들어가기(cd) |
ls -l로 보면 맨 앞에 -rwxr-xr-x처럼 나옵니다. 첫 글자는 종류(파일 -, 디렉터리 d)이고, 나머지 9자리를 세 글자씩 끊어 소유자·그룹·기타로 읽습니다.
숫자로 바꾸는 법
각 권한에 값을 매겨 더하면 한 부류를 숫자 하나로 표현할 수 있습니다 — 읽기 r=4, 쓰기 w=2, 실행 x=1. 세 부류의 합을 나란히 쓰면 우리가 보는 세 자리 숫자가 됩니다.
| 기호 | 계산 | 숫자 |
|---|---|---|
| rwx | 4+2+1 | 7 |
| rw- | 4+2+0 | 6 |
| r-x | 4+0+1 | 5 |
| r-- | 4+0+0 | 4 |
| --- | 0+0+0 | 0 |
그래서 rwxr-xr-x는 소유자 7, 그룹 5, 기타 5 → 755가 됩니다. 자리에 글자가 있으면 켜짐, 하이픈이면 꺼짐이라고만 기억하면 됩니다. 4·2·1을 더한 합이라 8진수 한 자리(0~7)와 정확히 들어맞는데, 이 비트 합산이 헷갈리면 진법 변환 개념을 함께 보면 이해가 빠릅니다.
자주 쓰는 권한 값
| 값 | 기호 | 주로 쓰는 곳 |
|---|---|---|
| 644 | rw-r--r-- | 일반 파일 — 소유자만 수정, 나머지는 읽기 |
| 755 | rwxr-xr-x | 스크립트·실행 파일·디렉터리 |
| 600 | rw------- | 비밀키 등 소유자 전용 파일 |
| 700 | rwx------ | 소유자만 들어가는 개인 디렉터리 |
| 664 | rw-rw-r-- | 그룹 협업 파일(그룹도 수정) |
디렉터리와 777 주의
디렉터리에서 실행(x)은 "안으로 들어가는 권한"입니다. 읽기만 있고 실행이 없으면 이름 목록은 보여도 cd로 들어가거나 안의 파일에 접근할 수 없습니다. 그래서 디렉터리는 거의 항상 x가 켜진 755·700을 씁니다.
755는 실행이 필요한 대상에 씁니다. 소유자는 읽기·쓰기·실행 모두(7), 그룹과 기타는 읽기·실행(5)만 갖습니다. 스크립트 파일이나 거의 모든 디렉터리가 이 값입니다. 644는 실행이 필요 없는 일반 파일용입니다. 소유자만 읽고 쓸 수 있고(6), 나머지는 읽기(4)만 가능합니다. 사진·문서·HTML·설정 파일처럼 직접 실행하지 않는 파일이 대부분 644입니다.
기호 9자리를 세 글자씩 끊어 소유자·그룹·기타로 읽습니다. 각 묶음에서 r은 4, w는 2, x는 1로 보고 더하면 그 묶음의 숫자가 됩니다. rwx는 4+2+1=7, r-x는 4+0+1=5라서 rwxr-xr-x는 755가 됩니다. 자리에 글자가 있으면 켜짐, 하이픈이면 꺼짐이라고 보면 되고, 같은 규칙을 세 번 반복할 뿐입니다.
777은 소유자·그룹·기타 모두에게 읽기·쓰기·실행을 전부 허용한다는 뜻이라 누구나 그 파일을 수정하거나 덮어쓸 수 있습니다. 권한 오류가 사라지니 임시방편으로 쓰기 쉽지만, 같은 서버를 쓰는 다른 사용자나 침입한 프로세스가 파일을 변조할 수 있어 보안 구멍이 됩니다. 권한 문제는 777 대신 소유자만 쓸 수 있는 644·755로 맞추고 소유권(chown)을 점검하는 쪽이 안전합니다.