Chmod
chmod(change mode의 축약어)명령어는 유닉스와 유닉스 계통 환경 안에서 쓰이는 셸 명령어이다. 이 명령어는 파일들이나 디렉터리의 파일 시스템 모드들을 바꾼다. 그 모드들은 허가나 특별한 모드들을 포함한다.
사용법
chmod
명령어 옵션들은 다음과 같이 지정된다:
$ chmod [
options
]
mode
[,
mode
]
file1
[
file2
...]
현재 어떤 허가들이 있는지 보기 위해서는 다음과 같이 입력한다:
$ ls -l
file
옵션
chmod
명령어는 행동에 영향을 미치는, 수많은 명령어 옵션들을 가진다. 가장 일반적인 옵션들은 다음과 같다:
-
-R
: 재귀적으로 파일들과 디렉터리들의 모드들을 바꾼다. -
-v
: 자세한 모드; 실행되고 있는 모든 파일을 나열한다.
문자열 모드
chmod
유틸리티에 대해서는, 모든 허가들과 특수한 모드들은 모드 매개변수에 의해서 표현된다. 파일들이나 디렉터리들의 모드를 조절하기 위한 하나의 방법은 기호적인 모드를 지정하는 것이다. 이 기호적인 모드는 세 가지 구성요소로 구성되며, 그것들은 단순한 문자열을 구성하기 위해서 결합된다:
$ chmod [
references
][
operator
][
modes
]
file1
...
레퍼런스들 (혹은 클래스들)은 허가가 적용되는 사용자들을 구분하기 위해서 사용된다. 만약 어떠한 레퍼런스들도 그것이 "모든 것"에 대해 기본값으로 지정하지 않았다면, 그것들은 다음 아래에 있는 문자들 중 하나 혹은 몇 개로 표현된다:
레퍼런스 | 클래스 | 설명 |
| 사용자 | 파일의 소유자 |
| 그룹 | 그 파일의 그룹 멤버인 사용자 |
| 다른 사람들 | 그 파일의 소유자나 혹은 그 그룹의 멤버가 아닌 사용자 |
| 모든 사람 | 위의 셋 모두, "ugo"와 같다 |
chmod
프로그램은 파일의 모드들이 어떻게 조정될 수 있는지를 명시하기 위해서 연산자를 사용한다. 허용되는 연산자는 다음과 같다:
연산자 | 설명 |
| 지정된 모드들은 지정된 클래스들에 더한다 |
| 지정된 클래스들로부터 지정된 모드들은 지운다 |
| 지정된 클래스들을 위해서 지정된 모드들이 정확한 모드들로 만들어지게 된다 |
그 모드들은 어떤 허가들이 인정될 것인지 혹은 지정된 클래스들로부터 삭제될 것인지를 지정한다. 기본적인 허가들과 일치하는 세가지 기본적인 모드들이 있다:
모드 | 이름 | 설명 |
| 읽기 (read) | 파일을 읽거나 디렉터리 안 내용물의 리스트를 보여준다 |
| 쓰기 (write) | 파일이나 디렉터리에 쓴다 |
| 실행하기 (excute) | 파일을 실행하거나 디렉터리 트리로 되돌아간다 |
| 특별한 실행하기 (special excute) | 이는 그 자체를 허가라고 보기보다는 |
| 셋유이드(setuid) | 상세 설명은 특별한 모드들 섹션에 있다 |
| 스티키(sticky) | 상세 설명은 특별한 모드들 섹션에 있다 |
이 세 가지 구성요소의 조합은 chmod
명령어에 의해 인식되는 문자열을 만든다. 쉼표로 다양한 기호적 모드들을 분리하므로 다양한 변화들을 지정할 수 있다.
특별한 모드들
chmod 명령어는 파일이나 디렉터리의 특별한 모드들이나 추가적인 허가들 역시 바꿀 수 있다. 그 기호적인 모드들은 setuid 나 setgid 모드들을 나타내기 위해서 s를 사용하고, sticky 모드를 나타내기 위해서 t를 사용한다. 이 모드들은 다른 클래스들이 지정되었지는 아닌지와 관계없이 적절한 클래스들에게만 적용될 수 있다. 대부분의 운영 시스템들은 8진법 모드들을 사용하여 특별한 모드들을 지정하는 것을 보조하고 있지만 어떤 운영체제들은 그렇지 않다. 이러한 시스템들에서는 오직 기호적인 모드들만 사용될 수 있다.