리눅스 시스템에서는 파일과 디렉토리의 접근 권한이 매우 중요합니다. 시스템의 안전성과 보안을 위해, 누가 어떤 파일에 접근하고 어떤 작업을 할 수 있는지를 세밀하게 조절할 수 있어야 하죠. 이를 위해 chmod 라는 명령어를 사용합니다.
✏️chmod란?
chmod는 changemode의 약자로, 리눅스에서 파일이나 디렉토리의 권한(permission)을 변경하는 명령어입니다.
🛠️리눅스의 파일 권한 구조
리눅스에서 모든 파일은 다음과 같은 세가지 사용자 그룹에 대해 권한을 가집니다.
- 소유자 (owner)
- 그룹 (group)
- 기타 사용자 (others)
각 그룹은 다음과 같은 권한을 가질 수 있습니다.
권한 | 의미 | 기호 |
읽기 | 파일 내용을 읽을 수 있음 | r |
쓰기 | 파일을 수정할 수 있음 | w |
실행 | 파일을 실행할 수 있음 (스크립트, 바이너리 등) | x |
예를 들어, 다음과 같은 권한 문자열이 있다면
- r - - r - x r w x | ||
--r | r-x | rwx |
읽기 가능 | 읽기 가능 | 읽기 가능 |
- | - | 쓰기 가능 |
- | 실행 가능 | 실행 가능 |
🔍chmod 기본 사용법
chmod [옵션] 권한 파일이름
✅ 기호 방식 (symbolic mode)
기호 | 의미 |
u | 사용자 (user = owner) |
g | 그룹 (group) |
o | 기타 (others) |
a | 모두 (all) |
+ | 권한 추가 |
- | 권한 제거 |
= | 권한 설정 |
chmod u+x script.sh
chmod g-w file.txt # 그룹의 쓰기 권한 제거
chmod o=r file.txt # 기타 사용자 권한을 읽기로만 설정
chmod a+x run.sh # 모든 사용자에게 실행 권한 추가
✅ 숫자 방식 (octal mode)
각 권한을 숫자로 표현한 방식입니다. 저는 이 방식이 더편했습니다.
표기 | 권한값 | 의미 |
0 | --- | 아무 권한 없다. |
1 | --x | 실행 권한만 있다. |
2 | -w- | 쓰기 권한만 있다. |
3 | -wx | 쓰기와 실행권한만 있다. |
4 | r-- | 읽기 권한만 있다. |
5 | r-x | 읽기와 실행 권한만 있다. |
6 | rw- | 읽기와 쓰기 권한만 있다. |
7 | rwx | 읽기, 쓰기, 실행 권한이 모두 있다. |
chmod 457 ab.txt
⛔주의사항
- 디렉토리에 실행(x) 권한이 없으면 그 디렉토리 안으로 이동하거나 파일 목록을 보는 데 제약이 생깁니다.
- 너무 과한 권한 (예: chmod 777) 은 보안 위험이 있습니다. 테스트 환경이 아니라면 주의하세요
- 파일 소유자만 권한을 변경할 수 있으며, 루트 사용자는 모든 권한을 변경할 수 있습니다.