Unix 파일 권한 계산기 (chmod)
대화형 chmod 권한 계산기입니다. 소유자·그룹·기타의 권한 비트를 토글하면 8진수와 기호 표기가 실시간으로 업데이트됩니다. 8진수를 직접 입력하여 권한 비트로 디코딩할 수도 있습니다.
| tools.unix-permissions-calculator.label.read | tools.unix-permissions-calculator.label.write | tools.unix-permissions-calculator.label.execute | Oct | |
|---|---|---|---|---|
| tools.unix-permissions-calculator.label.owner | 7 | |||
| tools.unix-permissions-calculator.label.group | 5 | |||
| tools.unix-permissions-calculator.label.other | 5 |
자주 쓰는 프리셋
chmod 755 filename작동 방식
Unix 권한과 8진수 표기의 기원
Unix 파일 권한은 Ken Thompson이 1969년 PDP-7에서 원래의 Unix를 설계할 때 만들었습니다. 각 파일의 inode에는 소유자·그룹·기타 각각 3비트씩 총 9개의 권한 비트가 저장됩니다. 각 3비트를 하나의 8진수 숫자(0~7)로 표현하는 것은 자연스러운 선택이었으며, 세 자리 숫자로 모든 권한을 표현할 수 있습니다. 이 8진수 표기법은 POSIX.1-1988에서 표준화되었으며 이후 모든 Linux·macOS·BSD·Unix 계열 시스템에서 변함없이 사용됩니다.
기호 표기(rwxr-xr-x)는 초기 Unix 배포판의 `ls -l` 출력에서 등장했으며 8진수의 인간 친화적 보완 수단이 되었습니다. POSIX는 두 표기법을 모두 규범으로 정의합니다. `chmod u+x file`은 기호 형식, `chmod 755 file`은 8진수 형식이며 결국 동일한 inode 모드 필드 비트 연산입니다.
읽기·쓰기·실행 권한의 의미
일반 파일의 경우: 읽기(r=4)는 파일 내용을 열고 읽을 수 있는 권한, 쓰기(w=2)는 파일을 수정하거나 잘라낼 수 있는 권한, 실행(x=1)은 파일을 프로그램으로 실행할 수 있는 권한입니다. 각 비트는 독립적입니다. 각 대상의 8진수 값은 설정된 비트의 합으로, rwx=7, r-x=5, r--=4입니다.
디렉터리의 경우 의미가 달라집니다. 읽기(r)는 `ls`로 디렉터리 내용을 나열하는 권한, 실행(x)은 '검색 비트'라고도 하며 `cd`로 디렉터리에 들어가거나 내부 파일을 경로로 접근하는 권한입니다. 쓰기(w)는 디렉터리 안에서 파일을 생성·삭제·이름 변경할 수 있는 권한입니다. 읽기는 있지만 실행이 없는 디렉터리는 파일 이름은 볼 수 있지만 열 수 없어 실용성이 거의 없습니다.
자주 사용하는 권한 패턴과 보안 고려사항
644(rw-r--r--)는 설정 파일·HTML·텍스트 파일의 표준으로, 소유자가 편집하고 나머지는 읽기만 가능합니다. 755(rwxr-xr-x)는 디렉터리와 실행 스크립트의 표준으로, 소유자가 내용을 관리하고 나머지는 탐색과 읽기만 가능합니다. 600(rw-------)과 700(rwx------)은 소유자만 접근할 수 있어 SSH 개인 키와 비밀번호 파일에 적합합니다. 웹에 노출된 파일에 777을 사용하지 마세요. '기타'에 쓰기 권한을 주면 시스템의 모든 프로세스가 파일을 덮어쓸 수 있게 됩니다.
umask는 새 파일과 디렉터리 생성 시 적용되는 기본 권한 마스크입니다. 일반적인 umask 022는 그룹과 기타에서 쓰기 권한을 제거하여 새 파일은 644, 새 디렉터리는 755가 됩니다(파일 기본값 666, 디렉터리 기본값 777에서 umask 비트를 빼는 방식). chmod 값과 umask의 관계를 이해하면 시스템 권한 기준을 완전히 제어할 수 있습니다.
자주 묻는 질문
›755는 무슨 의미인가요?
755는 소유자가 읽기+쓰기+실행(7=4+2+1), 그룹이 읽기+실행(5=4+1), 기타가 읽기+실행(5=4+1) 권한을 가짐을 의미합니다. 디렉터리와 실행 스크립트의 표준 권한입니다.
›644는 무슨 의미인가요?
644는 소유자가 읽기+쓰기(6=4+2), 그룹이 읽기 전용(4), 기타가 읽기 전용(4)임을 의미합니다. 설정 파일·웹 페이지 등 일반 파일의 기본 권한입니다.
›디렉터리에 왜 실행 권한이 필요한가요?
디렉터리에서 실행 비트는 '검색 비트'입니다. 이것이 없으면 읽기 권한이 있어도 cd로 진입하거나 경로로 파일을 열 수 없습니다. 실행 없이 읽기만 있는 디렉터리는 파일 이름은 볼 수 있지만 열지 못해 실용성이 거의 없습니다.
›소유자·그룹·기타의 차이는 무엇인가요?
소유자는 파일을 소유한 사용자 계정(생성 시 설정, chown으로 변경 가능)입니다. 그룹은 파일에 할당된 그룹(chgrp으로 변경 가능)으로, 해당 그룹의 사용자에게 그룹 권한이 적용됩니다. 기타는 소유자도 그룹 구성원도 아닌 시스템의 모든 사용자입니다.
›SUID와 SGID란 무엇인가요?
SUID(Set User ID)와 SGID(Set Group ID)는 표준 9비트 외의 특수 권한 비트입니다. 실행 파일에 SUID가 설정되면 호출자가 아닌 파일 소유자의 권한으로 실행됩니다(passwd, sudo 등에서 사용). 디렉터리의 SGID는 새 파일이 디렉터리의 그룹을 상속하게 합니다. 기호 표기에서는 's'로 표시(예: rwsr-xr-x), 8진수 값에 4000 또는 2000을 더합니다(예: 4755).
›chmod 777은 위험한가요?
네, 특히 공유 시스템이나 웹 서버에서는 위험합니다. 777은 시스템의 모든 사용자에게 읽기·쓰기·실행 전체 권한을 부여합니다. 침해된 웹 애플리케이션을 포함한 모든 프로세스가 파일을 덮어쓰거나 실행할 수 있어 임의 코드 실행으로 이어질 수 있습니다. 필요한 최소 권한만 부여하세요.
›chmod 명령어는 어떻게 사용하나요?
`chmod 8진수 경로`로 단일 파일에 적용하고, `chmod -R 8진수 디렉터리`로 재귀적으로 적용합니다. 예: `chmod 644 index.html`, `chmod 755 /var/www`. 기호 구문도 사용 가능합니다: `chmod u+x script.sh`는 다른 비트를 건드리지 않고 소유자에게만 실행 권한을 추가합니다.
›umask란 무엇인가요?
umask는 새 파일이나 디렉터리 생성 시 기본 권한에 적용되는 마스크입니다. umask 022는 그룹과 기타에서 쓰기 권한을 제거하여 새 파일은 644, 새 디렉터리는 755가 됩니다. 셸에서 `umask`로 현재 설정을 확인하고, `umask 값`으로 현재 세션 설정을 변경할 수 있습니다.
관련 도구
최종 업데이트: