chmod 권한 계산기 완벽 가이드
리눅스와 유닉스 계열 운영체제는 모든 파일과 디렉터리에 대해 소유자(user, u), 소유 그룹(group, g), 그 외 모든 사용자(other, o) 세 가지 대상별로 읽기(read, r), 쓰기(write, w), 실행(execute, x) 권한을 독립적으로 설정합니다. 서버를 운영하거나 SSH로 리눅스 서버에 접속해 작업할 때 chmod 명령어로 이 권한을 변경하는 일이 매우 잦은데, 8진수 숫자(755, 644, 700 등)와 rwx 기호 표기법(rwxr-xr-x)이 헷갈리는 경우가 많습니다. 이 계산기는 체크박스만 클릭하면 8진수 코드, rwx 심볼릭 표기, ls -l 스타일 문자열, 실제 사용 가능한 chmod 명령어(숫자 방식과 심볼릭 방식 둘 다)를 동시에 생성해 실수를 줄여줍니다.
8진수 권한 계산 원리
각 대상(소유자·그룹·기타)마다 읽기=4, 쓰기=2, 실행=1의 값을 부여하고, 허용하려는 권한의 값을 모두 더해 0~7 사이의 숫자 하나로 표현합니다. 예를 들어 읽기+쓰기+실행을 모두 허용하면 4+2+1=7, 읽기와 실행만 허용하면 4+1=5가 됩니다. 이렇게 계산한 세 자리 숫자를 순서대로 이어 붙이면(소유자-그룹-기타) 755, 644, 700 같은 익숙한 chmod 코드가 완성됩니다.
| 값 | 권한 | 기호 |
|---|---|---|
| 4 | 읽기 | r |
| 2 | 쓰기 | w |
| 1 | 실행 | x |
| 0 | 권한 없음 | - |
특수 권한 비트 (setuid·setgid·sticky bit)
일반 rwx 3자리 앞에 특수 권한을 나타내는 네 번째 자리를 추가로 붙일 수 있습니다. setuid(4000)는 실행 파일을 실행할 때 파일 소유자의 권한으로 동작하게 만들며, setgid(2000)는 그룹 권한을 상속시키고 디렉터리에 적용하면 그 안에 생성되는 파일이 자동으로 같은 그룹 소유가 됩니다. sticky bit(1000)는 공유 디렉터리(대표적으로 /tmp)에서 다른 사용자가 만든 파일을 소유자 본인만 삭제·수정할 수 있도록 제한합니다. 세 값은 각각 독립적으로 켤 수 있고 합산되어 4755, 2755, 1755, 심지어 6755(setuid+setgid)처럼 표현됩니다. rwx 표기에서는 실행 권한이 함께 설정된 경우 소문자 s(setuid/setgid) 또는 t(sticky)로, 실행 권한 없이 특수 비트만 설정된 경우 대문자 S 또는 T로 표시되는 점도 꼭 기억해 두세요.
사용 시 주의사항
- setuid·setgid는 보안 취약점의 원인이 될 수 있어 꼭 필요한 실행 파일에만, 신뢰할 수 있는 소스에만 적용해야 합니다.
- 디렉터리에는 실행(x) 권한이 있어야 그 안으로 이동(cd)하거나 내부 파일 목록에 접근할 수 있습니다.
- 777(모든 대상에게 모든 권한)은 웹 서버 등 외부에 노출된 환경에서는 절대 권장되지 않는 설정입니다.
- 실무에서는
chmod 755 file형태의 숫자 방식과chmod u=rwx,g=rx,o=rx file형태의 심볼릭 방식을 둘 다 알아두면 스크립트 작성 시 유용합니다.
자주 묻는 질문 (FAQ)
Q. chmod 755와 644의 차이는 무엇인가요?
A. 755는 소유자에게 읽기·쓰기·실행(rwx)을, 그룹과 기타 사용자에게는 읽기·실행(r-x)만 허용합니다. 주로 실행 파일이나 접근 가능한 디렉터리에 사용됩니다. 644는 소유자에게 읽기·쓰기(rw-)를, 그룹과 기타에게는 읽기(r--)만 허용하며, 일반 문서나 설정 파일 등 실행이 필요 없는 파일에 흔히 사용됩니다.
Q. 4자리 숫자(예 4755)와 3자리 숫자(예 755)는 어떻게 다른가요?
A. 3자리는 소유자·그룹·기타의 rwx 권한만 나타내고, 4자리의 맨 앞자리는 setuid·setgid·sticky bit 같은 특수 권한을 추가로 지정합니다. 특수 비트가 전혀 없다면 앞자리는 0이 되어 보통 생략하고 3자리로 표기합니다.
Q. 심볼릭 표기(rwxr-xr-x)와 chmod u=rwx,g=rx,o=rx 명령어는 결과가 같나요?
A. 네, 동일한 권한을 표현하는 두 가지 방식일 뿐입니다. rwxr-xr-x는 결과를 눈으로 확인하는 표기법이고, u=,g=,o= 형태는 chmod 명령에서 해당 권한을 실제로 설정할 때 사용하는 심볼릭 문법입니다. 이 계산기는 두 가지를 모두 자동 생성해 드립니다.