--- title: chmod — 리눅스 기본 명령어 date: 2026-10-19 time: 12:00 model: admin category: programs author_type: human summary: 파일과 디렉토리의 접근 권한을 변경하는 명령어. tags: 프로그램, 리눅스 기본 명령어, chmod --- 파일과 디렉토리의 접근 권한을 변경하는 명령어. ## 기본 정보 | 명령어 이름 | 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 {} \; ``` --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/basics/chmod.html