chmod — 리눅스 기본 명령어
Linux / 리눅스 기본 명령어 / chmod.html
파일과 디렉토리의 접근 권한을 변경하는 명령어.
기본 정보
| 명령어 이름 | chmod (change mode) |
|---|---|
| 한 줄 소개 | 파일과 디렉토리의 접근 권한을 변경하는 명령어. |
| 제공 | GNU coreutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/chmod.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 기본 명령어 (태그: 권한, 접근 제어, 리눅스, 기본) |
이 명령어는 무엇인가?
chmod는 change mode의 약자로, 파일과 디렉토리에 대한 접근 권한을 변경하는 명령어입니다. 리눅스에서는 소유자(owner), 그룹(group), 기타(other)에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 개별적으로 부여합니다.
숫자(8진수) 방식과 기호 방식 두 가지로 권한을 지정할 수 있으며, 스크립트 실행 권한 부여에 가장 자주 사용됩니다.
어떤 문제를 해결하는가?
- 스크립트 파일에 실행 권한을 부여합니다.
- 파일 접근 권한을 강화합니다.
- 공유 디렉토리 권한을 설정합니다.
- 권한이 잘못 부여된 파일을 수정합니다.
주요 기능
숫자(8진수) 방식
r=4, w=2, x=1의 조합으로 권한을 숫자로 지정합니다.
- 활용 상황: 정확한 권한을 한 번에 설정할 때.
- 얻는 결과: 예: 755 = 소유자(rwx), 그룹(r-x), 기타(r-x)
- 제한 사항: 숫자를 잘못 지정하면 권한이 과도하게 열릴 수 있습니다.
기호 방식
u(소유자), g(그룹), o(기타), a(전체)에 +, -, = 연산자를 사용합니다.
- 활용 상황: 특정 대상의 권한만 변경할 때.
- 얻는 결과: 예: chmod u+x script.sh (소유자에게 실행 권한)
- 제한 사항: 기호 방식이 숫자보다 읽기 어려울 수 있습니다.
재귀 변경 (-R)
디렉토리와 하위의 모든 파일에 권한을 적용합니다.
- 활용 상황: 디렉토리 전체 권한을 일괄 변경할 때.
- 얻는 결과: 하위 파일까지 모두 변경됩니다.
- 제한 사항: 과도한 재귀 변경은 시스템에 문제를 일으킬 수 있습니다.
참조 파일 복사 (--reference)
다른 파일의 권한을 그대로 복사합니다.
- 활용 상황: 일관된 권한 설정이 필요할 때.
- 얻는 결과: 참조 파일과 동일한 권한이 적용됩니다.
- 제한 사항: 일부 파일 시스템에서는 지원하지 않을 수 있습니다.
설치 및 실행
기본 탑재 확인
모든 Linux 배포판에 기본 포함되어 있습니다.
which chmod
chmod --version
권한 확인 명령 (ls -l)
현재 권한을 확인하려면 ls -l을 사용합니다.
ls -l file.txt
# -rw-r--r-- 1 user group 1024 Oct 18 12:00 file.txt
# ^^^ 소유자 권한
# ^^^ 그룹 권한
# ^^^ 기타 권한
실제 사용 예제
숫자 방식으로 권한 변경
8진수로 권한을 설정합니다.
# 스크립트에 실행 권한 부여 (755)
chmod 755 script.sh
# 읽기/쓰기만 (600)
chmod 600 secret.key
# 전체 읽기 (644)
chmod 644 public-file.txt
# 디렉토리 트래버스 권한 (755)
chmod 755 /var/www/html
기호 방식으로 권한 변경
특정 대상의 권한만 변경합니다.
# 소유자에게 실행 권한 추가
chmod u+x script.sh
# 기타의 실행 권한 제거
chmod o-x script.sh
# 그룹에 읽기 권한 추가
cat /etc/hosts | sudo tee /var/log/shared.txt
group_name="developers"
chmod g+r /var/log/shared.txt
chgrp $group_name /var/log/shared.txt
# 전체 읽기 권한 설정
chmod a=r file.txt
재귀 권한 변경
디렉토리 전체에 권한을 적용합니다.
# 디렉토리와 하위 파일에 실행 권한 부여
chmod -R a+x /opt/scripts/
# 디렉토리 권한만 변경 (파일은 유지)
chmod 755 /var/www/html/
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;