chmod

정의
chmod(change mode)은 유닉스 및 유닉스 계열 운영체제에서 파일이나 디렉터리의 접근 권한(모드)을 변경하기 위해 사용되는 명령어이다. 파일 시스템 객체에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 소유자(owner), 그룹(group), 기타 사용자(others) 각각에 부여하거나 회수한다.

개요
chmod는 명령행 인터페이스를 제공하며, 기본 구문은 다음과 같다.

chmod [옵션] 모드 파일...
  • 모드는 권한을 지정하는 방법에 따라 기호식(symbolic)8진수식(octal) 로 표현할 수 있다.

    • 기호식 예: u+rwx,g+rx,o-r – 소유자에게 읽기·쓰기·실행 권한을 부여하고, 그룹에 읽기·실행 권한을 부여하며, 기타 사용자에게서 읽기 권한을 회수한다.
    • 8진수식 예: 755 – 소유자는 읽기·쓰기·실행(7), 그룹과 기타 사용자는 읽기·실행(5) 권한을 갖는다.
  • 옵션으로는 -R(재귀적 적용), -v(변경 사항 출력), -c(변경된 경우에만 출력) 등이 있다.

chmod는 POSIX 표준에 정의되어 있어, 대부분의 현대적인 유닉스 계열 시스템(Linux, macOS, *BSD 등)에서 동일한 동작을 제공한다. 내부적으로는 파일 시스템에 저장된 권한 비트를 수정하는 시스템 콜인 chmod(2)를 호출한다.

어원/유래
chmod는 “change mode”의 약어이다. 초기 유닉스 버전(1970년대 초)에서 파일 권한을 조정하는 명령어로 도입되었으며, 이후 BSD와 System V 계열을 거쳐 POSIX 표준에 채택되었다. 정확한 최초 구현 시점에 대한 상세 기록은 제한적이지만, 유닉스 7th Edition(1979) 매뉴얼에 이미 chmod 명령이 포함되어 있다.

특징

  • 기호식과 8진수식 지원: 사용자는 상황에 맞게 직관적인 기호식 또는 간결한 8진수식 중 선택하여 권한을 지정할 수 있다.
  • 재귀적 적용: -R 옵션을 사용하면 디렉터리와 그 하위 모든 파일·디렉터리에 일괄 적용한다.
  • 접근 제어 리스트(ACL)와의 연계: 기본적인 POSIX 권한 외에도 파일 시스템이 ACL을 지원하는 경우, chmod는 기존 POSIX 비트만을 조정한다; ACL 자체는 setfacl·getfacl 등 별도 도구로 관리한다.
  • 보안 감시: -v·-c 옵션을 통해 변경 내역을 로그에 남기거나 스크립트에서 확인할 수 있다.
  • 이식성: POSIX 표준에 따라 정의돼 있어, 스크립트가 다양한 유닉스 계열 환경에서 동일하게 동작한다.

관련 항목

  • chmod(2) – 파일 모드 변경에 사용되는 시스템 콜.
  • umask – 새로 생성되는 파일·디렉터리의 기본 권한을 제한하는 셸 변수.
  • chown – 파일 소유자 및 그룹을 변경하는 명령어.
  • ls – 파일 권한을 표시하는 명령어, chmod와 함께 권한 확인·수정에 사용된다.
  • 파일 권한(읽기, 쓰기, 실행) 및 POSIX 권한 모델.
  • Access Control List (ACL) – POSIX 권한 외에 세부적인 접근 제어를 제공하는 메커니즘.
둘러보기

더 찾아볼 만한 주제