chmod 계산기
Unix 파일 권한을 8진수(755), 기호(rwxr-xr-x), 체크박스 그리드 사이에서 변환. setuid/setgid/sticky 비트, chmod·find 명령, umask 힌트까지 포함.
| 읽기 (r) | 쓰기 (w) | 실행 (x) | |
|---|---|---|---|
| 소유자 (u) | |||
| 그룹 (g) | |||
| 기타 (o) |
chmod 755 file
find . -type f -perm 755
참고: setgid 디렉터리 동작은 macOS와 Linux에서 다를 수 있습니다 — 대상 OS에서 테스트하세요.
사용법
- 8진수를 입력하거나(예:
755,644,4755) 프리셋 칩을 클릭합니다. - rwx 체크박스 그리드로 비트를 토글하면 8진수와 기호 형식이 함께 업데이트됩니다.
- 출력 패널에서 chmod 또는 find 명령을 복사합니다.
자세한 설명
펼치기접기
유닉스 파일 권한을 양방향으로 계산해 줍니다. 755나 4755 같은 8진수를 입력하거나, 소유자·그룹·기타에 대한 읽기·쓰기·실행 체크박스 격자를 클릭하면 기호 표기가 실시간으로 갱신됩니다. 패널에는 chmod 명령, 그에 대응하는 find -perm 표현식, 그리고 등가의 umask 값이 함께 나오므로 지금 쓰는 셸 세션에 필요한 형태를 그대로 복사해 갈 수 있습니다.
기호 표기가 미묘해지는 지점이 특수 비트이고, 이 도구는 ls와 같은 방식으로 표시합니다. setuid(4000), setgid(2000), 스티키 비트(1000)는 각자 해당하는 칸의 실행 문자를 대체합니다. 실행 비트도 함께 켜져 있으면 소문자 s나 t, 그렇지 않으면 대문자 S나 T가 됩니다. 이 대문자는 거의 언제나 잡아낼 가치가 있는 실수입니다. 4644는 rwSr--r--로 표시되는데, setuid가 붙어 있지만 아무도 실행할 수 없는 파일입니다. 감사 보고서에서 불길해 보이는 것 말고는 아무 일도 하지 않습니다.
각 특수 비트가 실제로 무엇을 하는지는 구분해 둘 만합니다. 셋 중 어디서나 같은 뜻인 것은 하나뿐이기 때문입니다. 실행 파일의 setuid는 그 파일을 소유자 권한으로 실행시키는데, 리눅스는 셸 스크립트에 대해서는 이를 의도적으로 무시합니다. 그래서 setuid가 붙은 .sh는 보기만큼 위험한 구멍이 아니라 그냥 아무 효과가 없습니다. 디렉터리의 setgid가 진짜로 쓸모 있는 쪽입니다. 그 안에 새로 만들어지는 파일이 만든 사람의 그룹이 아니라 디렉터리의 그룹을 물려받습니다. 공용 프로젝트 디렉터리가 계속 공용으로 남는 방식이 이것입니다. /tmp처럼 디렉터리에 걸린 스티키 비트는, 디렉터리의 쓰기 권한과 무관하게 파일의 소유자, 디렉터리의 소유자, root만 그 파일을 지울 수 있다는 뜻입니다.
표시되는 umask는 777에 대한 모드의 보수입니다. 입력하는 숫자는 맞지만 언제나 그대로의 모드가 나오지는 않습니다. umask는 빼는 값이고 출발점이 종류마다 다릅니다. 디렉터리는 777에서, 파일은 666에서 시작합니다. 파일에는 기본적으로 실행 비트를 주지 않기 때문입니다. 그래서 umask 022 하나가 디렉터리는 755, 파일은 644를 만듭니다. 그리고 늘 붙는 경고가 하나 있습니다. chmod 777은 거의 언제나 해결책이 아닙니다. 그것은 최후의 권한이고, 적용한 파일을 모든 사용자와 프로세스가 읽고 쓰고 실행할 수 있게 만들며, 그것으로 해결되는 듯 보이는 문제는 대개 소유권이거나 상위 디렉터리에 실행 비트가 빠진 것입니다.
자주 묻는 질문
기호 모드에서 s와 S의 차이는?
소문자 s는 setuid/setgid가 켜져 있고 실행 비트도 켜진 상태입니다. 대문자 S는 특수 비트는 켜졌지만 실행 비트는 꺼진 상태로, 보통 설정 실수이니 확인이 필요합니다.
Sticky 비트는 무슨 역할?
디렉터리에 sticky 비트(1xxx, t로 표시)를 설정하면 파일 삭제 제한이 적용됩니다. 다른 사용자에게 쓰기 권한이 있어도 파일 소유자, 디렉터리 소유자 또는 root만 삭제할 수 있습니다. 대표적인 예로 /tmp는 1777입니다.
umask는 어떻게 계산되나요?
umask는 새 파일이 가질 권한의 보수입니다. 파일을 644로 만들고 싶다면 umask는 022입니다(새 파일은 666, 디렉터리는 777에서 umask 비트를 빼므로 666 − 022 = 644, 777 − 022 = 755).
읽기 권한이 있는데도 디렉터리에 못 들어가는 이유는?
디렉터리에서는 비트의 뜻이 파일과 다르기 때문입니다. 읽기는 안의 이름들을 나열하는 것이고, 쓰기는 항목을 만들고 지우는 것이며, 실행은 그 안으로 들어가거나 그 아래에 닿는 것을 허락합니다. 읽기만 있고 실행이 없는 디렉터리에서는 이름은 보이지만 아무것도 열 수 없고, 실행만 있고 읽기가 없으면 이미 아는 이름의 파일은 열리지만 ls는 실패합니다.
파일 권한이 삭제를 통제하지 못하는 것처럼 보이는 이유는?
삭제는 파일이 아니라 디렉터리에 대한 작업이기 때문입니다. 항목 하나를 제거하는 일이므로 그것을 담고 있는 디렉터리의 쓰기 권한이 결정합니다. 읽기 전용 파일이라도 쓰기 가능한 디렉터리 안에 있으면 지워지는 이유가 이것이고, 스티키 비트가 존재하는 이유이기도 합니다. 공유 디렉터리에서 각 항목의 삭제를 그 소유자와 디렉터리 소유자, root로 제한합니다.
관련 도구
Hex Dump 뷰어
텍스트 또는 작은 파일을 오프셋 + hex 바이트 + 인쇄 가능 ASCII로 표시. xxd나 hexdump -C 형식.
개발
MIME 타입 조회
확장자로 MIME 타입을 찾거나 그 반대로 조회. 각 타입의 용도 설명.
개발
systemd 서비스 파일 생성기
systemd .service 유닛 파일을 만듭니다. Type, Restart, User, Environment, 샌드박싱 설정과 설치·journalctl 명령까지 함께 출력합니다.
개발
BSON 디코더 · 확장 JSON 뷰어
MongoDB BSON 파일을 브라우저에서 해석합니다. 요소 타입과 타입 바이트, 정확한 int64와 decimal128, 정규/완화 확장 JSON을 함께 보여 줍니다.
개발
Java .properties 파서
java.util.Properties.load와 똑같이 .properties 파일을 파싱하고, 구분자·이스케이프·이어붙이기에서 놀랄 만한 줄을 짚어 줍니다.
개발
파이썬 피클 검사기
.pkl 파일을 브라우저에서 디스어셈블합니다. 오프코드 전체, 메모, 복원된 값, 그리고 불러올 때 코드가 실행되는지까지.
개발