chmod 권한 계산기 쉽게 이해하기 — 개념과 원리
리눅스, macOS 같은 유닉스 계열 시스템에서는 모든 파일과 디렉터리에 누가 읽고 쓰고 실행할 수 있는지 정하는 권한 비트가 있습니다. 이 계산기는 chmod 명령에 쓰는 8진수(예: 755)와 ls -l이 보여 주는 기호(예: rwxr-xr-x)를 서로 바꾸고, 각 권한을 쉬운 말로 설명하며, 바로 쓸 수 있는 chmod 명령을 만들어 줍니다.
계산 방법
8진수 한 자리 = 읽기(4) + 쓰기(2) + 실행(1)
자리 순서: 소유자(user), 그룹, 기타 사용자
선택적인 앞자리: setuid 4000, setgid 2000, 스티키 1000
ls -l은 set-ID 비트를 실행 자리에 s 또는 S(실행 꺼짐)로, 스티키 비트를 t 또는 T로 표시합니다.
예: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--, 0 = ---
원리
권한은 비트로 저장되고, 8진수는 세 비트씩 묶어 간단히 쓰는 방법입니다. 한 자리에 한 사용자 부류의 읽기, 쓰기, 실행을 담으므로 755는 소유자는 모두 할 수 있고 그룹과 기타 사용자는 읽기와 실행만 할 수 있다는 뜻입니다. 디렉터리에서는 같은 비트의 의미가 조금 다릅니다. 읽기는 이름 목록 보기, 쓰기(실행과 함께)는 항목 만들기·지우기·이름 바꾸기, 실행은 디렉터리에 들어가 안의 파일에 접근하는 권한입니다. 특수 비트는 프로그램 실행 방식(set-ID)을 바꾸거나 공유 디렉터리의 파일을 보호(스티키)합니다.
예제 풀이
기본값인 755, 파일에 적용으로 계산합니다.
- 7 = 4 + 2 + 1 = 소유자 rwx, 5 = 4 + 1 = 그룹과 기타 r-x입니다.
- 8진수 = 0755, 기호 = rwxr-xr-x입니다.
- 소유자: 읽기, 수정, 실행입니다.
- 그룹과 기타: 읽기, 실행입니다.
- 특수 비트 없음, 명령은 chmod 755와 chmod u=rwx,g=rx,o=rx입니다.
결과 해석
755는 누구나 쓰되 소유자만 고칠 수 있는 프로그램과 디렉터리에 흔합니다. 644(rw-r--r--)는 일반 파일에 흔하고, 600(rw-------)은 파일을 비공개로 두며 일부 도구는 개인 키에 이를 요구합니다. 누구나 파일을 바꿀 수 있는 777은 필요한 경우가 드물고 보안 위험이 될 수 있으니 피하십시오.
흔한 실수
- 권한 오류를 고치려고 올바른 소유자·그룹을 찾는 대신 777을 쓰는 경우
- 디렉터리에 들어가려면 실행 권한이 필요하다는 점을 잊는 경우
- 순서(소유자, 그룹, 기타)를 헷갈리는 경우
- 많은 시스템이 보안상 무시하는 스크립트의 setuid를 설정하는 경우
자주 묻는 질문
chmod 644는 무슨 뜻인가요?
소유자 읽기·쓰기, 그룹과 기타 읽기 전용(rw-r--r--)입니다.
읽을 수 있는 디렉터리에 왜 들어갈 수 없나요?
들어가려면 실행(탐색) 권한이 필요하기 때문입니다.
스티키 비트란 무엇인가요?
디렉터리에서 다른 사용자의 파일을 지우거나 이름 바꾸지 못하게 하며, /tmp가 대표적입니다.
출처: The Open Group Base Specifications Issue 7 (POSIX.1-2008, IEEE Std 1003.1), chmod and ls utilities