Linux / 명령어 / chmod - 파일·디렉터리 접근 권한 변경
chmod는 파일과 디렉터리의 읽기·쓰기·실행 권한을 바꿉니다. 숫자 모드와 기호 모드를 사용할 수 있으며, 변경 전에 대상의 현재 권한을 확인하는 것이 안전합니다.
chmod 명령어란?
권한은 소유자, 그룹, 그 밖의 사용자에게 각각 적용됩니다. 일반 파일의 실행 비트는 실행 가능 여부를, 디렉터리의 실행 비트는 그 경로를 통과하고 내부 항목에 접근할 수 있는지를 좌우합니다. 소유권을 바꾸는 명령은 chown입니다.
기본 문법
chmod [옵션] 모드 파일 ...
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man chmod으로 현재 시스템의 설명을 확인하세요.
사용 예제
기호 모드로 실행 권한 추가
소유자에게만 실행 권한을 더하고 다른 권한은 그대로 둡니다.
chmod u+x script.sh
숫자 모드로 권한 지정
소유자 읽기·쓰기, 그룹과 그 밖의 사용자 읽기만 허용합니다.
chmod 644 report.txt
변경 전후 확인
권한을 바꾼 뒤 대상 파일의 모드를 확인합니다.
ls -l report.txt chmod go-rwx report.txt ls -l report.txt
권한 숫자가 실제로 적용됐는지 확인하기
640은 소유자 읽기·쓰기, 그룹 읽기, 기타 사용자 권한 없음입니다. 다음 예제는 직접 만든 파일에만 적용한 뒤 stat으로 확인합니다.
printf 'demo\n' > demo.txt chmod 640 demo.txt stat -c '%a %n' demo.txt
예시 출력:
640 demo.txt
chmod 자체는 성공해도 보통 아무것도 출력하지 않습니다. 디렉터리에서는 실행 비트가 진입·탐색 권한을 뜻하므로 파일과 같은 숫자를 기계적으로 적용하면 접근 문제가 생길 수 있습니다. 재귀 변경 전에 대상 경로와 하위 항목을 확인하세요.
숫자 모드는 전체 권한 비트를 다시 지정하는 반면 chmod g+w 파일 같은 기호 모드는 기존 권한에 필요한 비트만 더합니다. 공유 디렉터리에서 협업할 때는 소유자·그룹·기타 사용자 권한을 함께 읽고, 파일을 실행 가능하게 만드는 것이 정말 필요한지 판단하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
u/g/o/a |
소유자·그룹·그 밖의 사용자·전체를 뜻합니다. |
+ / - / = |
권한 추가·제거·지정을 뜻합니다. |
r/w/x |
읽기·쓰기·실행 권한을 뜻합니다. |
-R |
하위 디렉터리와 파일까지 재귀 변경합니다. |
--reference=파일 |
참조 파일과 같은 모드를 적용합니다. |
사용할 때 주의할 점
chmod -R 777은 모든 사용자에게 광범위한 접근을 주므로 편의상 사용하지 마세요. 파일과 디렉터리는 필요한 권한이 다릅니다. 재귀 변경 전에는 find나 ls로 대상 범위를 확인하고, ACL과 SELinux처럼 기본 모드 외의 접근 제어도 살펴보세요.
자주 묻는 질문
chmod 755는 무엇을 뜻하나요?
소유자는 읽기·쓰기·실행(7), 그룹과 그 밖의 사용자는 읽기·실행(5)을 갖습니다. 일반 파일과 디렉터리에 동일하게 적용해도 의미는 다릅니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 chmod 관련 공식 문서에서 확인할 수 있습니다.









