chmod 권한 계산기 (755 ↔ rwx)
체크박스로 권한을 만들고 8진수·심볼릭을 동시에
| 권한 | 읽기r·4 | 쓰기w·2 | 실행x·1 |
|---|---|---|---|
| 소유자 (u) | |||
| 그룹 (g) | |||
| 기타 (o) |
특수비트 (선택)
8진수 (chmod 인자)
0644
심볼릭 (ls -l)
rw-r--r--
값으로 입력
755 나 rwxr-xr-x 를 붙여넣으면 위 격자가 채워집니다.
3~4자리 (0-7). 예: 755, 4755
9자 (rwx×3) 또는 10자 (앞 타입 문자)
chmod 는 외우는 게 아니라 세 벌의 rwx 다
chmod 755 의 755 를 통째로 외우려 하면 끝이 없습니다. 대신 이 숫자가 어떻게 조립되는지만 보면, 다시는 외울 필요가 없어집니다.
유닉스 파일 권한은 세 벌로 되어 있습니다 — 파일의 소유자 (user), 소유자가 속한 그룹(group), 그리고 그 밖의 모두(other). 각 벌마다 세 가지를 켜거나 끕니다: 읽기(r), 쓰기(w), 실행(x). 그래서 권한은 결국 3×3 스위치판입니다. 위 계산기의 체크박스 격자가 정확히 그 스위치판입니다.
왜 하필 숫자가 8진수인가
한 벌(rwx)은 스위치 세 개, 즉 3비트입니다. 그리고 3비트가 나타낼 수 있는 값은 0~7, 정확히 8진수 한 자리입니다(8 = 23). 이 맞아떨어짐이 chmod 숫자의 정체입니다.
r w x 비트값
4 2 1
7 = 111 = rwx (4+2+1)
6 = 110 = rw- (4+2)
5 = 101 = r-x (4+1)
4 = 100 = r-- (4)
755 → rwx r-x r-x
소유자 그룹 기타읽기 4, 쓰기 2, 실행 1을 더하면 그 벌의 숫자입니다. 7 = 4+2+1(전부), 6 = 4+2(읽기·쓰기), 5 = 4+1(읽기·실행). 세 벌을 나란히 적으면 755 가 됩니다. 이 “3비트 = 8진 한 자리” 감각은 진법 변환기의 8진수 이야기와 같은 뿌리입니다 — chmod 가 8진수를 쓰는 건 우연이 아니라 rwx 가 정확히 3비트이기 때문입니다.
가장 자주 틀리는 곳: 디렉터리의 x
여기서부터가 계산기가 답을 주지만 설명하지 않는 부분입니다. 실행 비트(x)는 파일과 디렉터리에서 뜻이 완전히 다릅니다.
- 파일의 x — 이 파일을 프로그램으로 실행할 수 있다. 스크립트나 바이너리에만 필요합니다. 일반 텍스트·이미지·HTML에는 줄 이유가 없습니다.
- 디렉터리의 x — 이 디렉터리를 통과(접근)할 수 있다.
cd로 들어가거나 그 안의 파일을 여는 데 필요합니다.
그래서 디렉터리에 r 만 있고 x 가 없으면, 안에 무슨 파일이 있는지 이름은 보이는데 하나도 열 수가 없습니다 — 잠긴 유리 서랍 같은 상태입니다. 디렉터리를 644로 만들어 놓고 “권한을 줬는데 왜 안 되지” 하는 경우가 여기서 나옵니다. 디렉터리는 거의 항상 755 나 700 처럼 실행이 함께 켜져야 합니다. 반대로 일반 파일의 기본은 644 입니다 — 실행이 필요 없기 때문입니다.
맨 앞자리: 특수비트
4755 처럼 네 자리가 되면 맨 앞이 특수비트입니다. 이건 rwx 세 벌과 다른 층에 있는 세 개의 스위치입니다.
- setuid (4000) — 실행할 때 파일 소유자의 권한으로 동작합니다.
passwd명령이 대표적입니다. 일반 사용자가 실행해도 잠깐root권한을 빌려 비밀번호 파일을 고칩니다. 심볼릭 표기에서는 소유자 실행 자리가s로 바뀝니다 (rwsr-xr-x). - setgid (2000)— 그룹 버전입니다. 디렉터리에 걸면 그 안에서 새로 만들어지는 파일이 부모 디렉터리의 그룹을 물려받아, 팀 공유 폴더에서 “누가 만들었든 같은 그룹”을 유지합니다.
- sticky bit (1000)— 디렉터리에 걸면 “자기가 만든 파일은 자기만 지운다”는 규칙을 더합니다.
/tmp가1777인 이유입니다 — 누구나 쓸 수 있지만 남의 임시 파일을 지우지는 못합니다.
777을 풀기 전에
권한 오류가 났을 때 chmod 777로 “전부 열기”는 가장 흔하고 가장 위험한 해결책입니다. 777 은 이 서버에 닿는 누구나그 파일을 고치고 실행할 수 있다는 뜻이고, 웹 서버라면 방문자가 굴리는 웹 프로세스도 그 ‘누구나’에 포함됩니다. 공격자가 파일을 덮어쓰고 실행시키는 통로가 그렇게 열립니다.
대부분의 “권한 오류”는 사실 소유권 문제입니다 — 권한이 모자란 게 아니라 파일 주인이 내가 아닌 것입니다. 그럴 때는 권한을 넓히는 대신 chown 으로 소유자를 맞추고, 권한은 필요한 최소치(파일 644, 디렉터리·스크립트 755)로 두는 게 정답입니다. 이 계산기로 644 와 755를 찍어 보고 rwx 가 각각 어떻게 켜지는지 눈으로 익혀 두면, 다음에 권한 오류를 만났을 때 “무엇을 최소한으로 열어야 하나”가 보입니다.
자주 묻는 질문
- 755와 644는 무엇이 다른가요?
- 실행 권한(x)의 유무입니다. 755는 rwxr-xr-x라 소유자는 읽기·쓰기·실행 전부, 그룹과 기타는 읽기·실행입니다. 644는 rw-r--r--라 실행 권한이 아예 없습니다. 그래서 실행돼야 하는 것(디렉터리, 스크립트, 프로그램)은 755, 그냥 읽히기만 하면 되는 것(HTML·이미지·설정 파일 같은 일반 파일)은 644가 기본입니다. 일반 파일에 실행 권한을 줄 이유가 없고, 디렉터리에 실행 권한이 없으면 그 안으로 들어갈 수 없습니다.
- 왜 777은 위험한가요?
- 777은 rwxrwxrwx, 즉 이 서버에 접근하는 누구나 그 파일을 읽고·고치고·실행할 수 있다는 뜻입니다. 웹 서버라면 방문자가 실행하는 웹 프로세스도 '기타(other)'에 포함되므로, 공격자가 그 파일에 악성 코드를 덮어쓰고 실행시킬 길이 열립니다. '권한 오류가 나길래 777로 풀었더니 되더라'가 실제 침해로 이어지는 전형적인 경로입니다. 문제는 대개 소유자(owner)가 맞지 않는 것이지 권한이 부족한 게 아니므로, 777 대신 소유권(chown)을 고치거나 필요한 최소 권한(보통 644·755)만 주는 게 맞습니다.
- 디렉터리의 실행 권한(x)은 파일과 다른가요?
- 다릅니다. 그리고 이게 chmod에서 가장 자주 헷갈리는 부분입니다. 파일의 x는 '이 파일을 프로그램으로 실행할 수 있다'는 뜻이지만, 디렉터리의 x는 '이 디렉터리를 통과(접근)할 수 있다'는 뜻입니다. 디렉터리에 r만 있고 x가 없으면 이름 목록은 볼 수 있어도 그 안의 파일을 열 수 없고, cd로 들어갈 수도 없습니다. 그래서 디렉터리는 거의 항상 읽기와 실행을 함께(5 또는 7) 줍니다 — 644인 디렉터리는 사실상 잠긴 서랍입니다.
- 맨 앞의 4·2·1(4755, 2755, 1777)은 무엇인가요?
- 특수비트입니다. setuid(4)는 실행 시 파일 소유자의 권한으로 동작하게 합니다 — passwd 명령이 대표적으로, 일반 사용자가 실행해도 잠깐 root 권한으로 비밀번호 파일을 고칠 수 있는 이유입니다. setgid(2)는 그룹 버전이고, 디렉터리에 걸면 그 안에서 만들어지는 파일이 부모의 그룹을 물려받아 공유 폴더에 유용합니다. sticky bit(1)는 디렉터리에 걸면 '자기 파일은 자기만 지운다'는 규칙을 더합니다. /tmp가 1777인 이유입니다.
- 숫자(755)와 기호(u+x)는 무엇이 다른가요?
- 둘 다 chmod 인자입니다. 755처럼 8진수를 주면 세 벌의 권한을 통째로 '이 값으로 설정'합니다 — 기존 권한과 무관하게 덮어씁니다. u+x처럼 기호를 주면 '소유자에게 실행을 더한다'처럼 기존 권한에서 일부만 바꿉니다. 파일 하나의 상태를 정확히 맞출 때는 숫자가, 여러 파일에 '실행만 빼기(-x)'처럼 상대적 변경을 걸 때는 기호가 편합니다. 이 계산기는 위 격자로 만든 상태를 8진수와 기호(rwx) 양쪽으로 동시에 보여 줍니다.
- 권한을 바꿨는데도 접근이 안 됩니다.
- 권한(permission)과 소유권(ownership)은 다른 축입니다. chmod는 '소유자/그룹/기타가 각각 무엇을 할 수 있는가'를 정할 뿐, '누가 소유자인가'는 chown이 정합니다. 파일 소유자가 내가 아니면 아무리 소유자 권한(7)을 줘도 나에게는 '기타'의 권한만 적용됩니다. 또 상위 디렉터리 중 하나에 실행(x) 권한이 없으면 그 아래는 권한과 무관하게 막힙니다 — 접근은 경로 전체의 x를 통과해야 합니다.