Skip to content

Chmod

chmod(change mode의 축약어)명령어는 유닉스와 유닉스 계통 환경 안에서 쓰이는 셸 명령어이다. 이 명령어는 파일들이나 디렉터리의 파일 시스템 모드들을 바꾼다. 그 모드들은 허가나 특별한 모드들을 포함한다.

사용법

chmod 명령어 옵션들은 다음과 같이 지정된다:

$ chmod [options]mode[,mode]file1[file2...]

현재 어떤 허가들이 있는지 보기 위해서는 다음과 같이 입력한다:

$ ls -lfile

옵션

chmod 명령어는 행동에 영향을 미치는, 수많은 명령어 옵션들을 가진다. 가장 일반적인 옵션들은 다음과 같다:

  • -R: 재귀적으로 파일들과 디렉터리들의 모드들을 바꾼다.
  • -v: 자세한 모드; 실행되고 있는 모든 파일을 나열한다.

문자열 모드

chmod 유틸리티에 대해서는, 모든 허가들과 특수한 모드들은 모드 매개변수에 의해서 표현된다. 파일들이나 디렉터리들의 모드를 조절하기 위한 하나의 방법은 기호적인 모드를 지정하는 것이다. 이 기호적인 모드는 세 가지 구성요소로 구성되며, 그것들은 단순한 문자열을 구성하기 위해서 결합된다:

$ chmod [references][operator][modes]file1...

레퍼런스들 (혹은 클래스들)은 허가가 적용되는 사용자들을 구분하기 위해서 사용된다. 만약 어떠한 레퍼런스들도 그것이 "모든 것"에 대해 기본값으로 지정하지 않았다면, 그것들은 다음 아래에 있는 문자들 중 하나 혹은 몇 개로 표현된다:

레퍼런스

클래스

설명

u

사용자

파일의 소유자

g

그룹

그 파일의 그룹 멤버인 사용자

o

다른 사람들

그 파일의 소유자나 혹은 그 그룹의 멤버가 아닌 사용자

a

모든 사람

위의 셋 모두, "ugo"와 같다

chmod 프로그램은 파일의 모드들이 어떻게 조정될 수 있는지를 명시하기 위해서 연산자를 사용한다. 허용되는 연산자는 다음과 같다:

연산자

설명

+

지정된 모드들은 지정된 클래스들에 더한다

-

지정된 클래스들로부터 지정된 모드들은 지운다

=

지정된 클래스들을 위해서 지정된 모드들이 정확한 모드들로 만들어지게 된다

그 모드들은 어떤 허가들이 인정될 것인지 혹은 지정된 클래스들로부터 삭제될 것인지를 지정한다. 기본적인 허가들과 일치하는 세가지 기본적인 모드들이 있다:

모드

이름

설명

r

읽기 (read)

파일을 읽거나 디렉터리 안 내용물의 리스트를 보여준다

w

쓰기 (write)

파일이나 디렉터리에 쓴다

x

실행하기 (excute)

파일을 실행하거나 디렉터리 트리로 되돌아간다

X

특별한 실행하기 (special excute)

이는 그 자체를 허가라고 보기보다는 x 대신에 사용될 수 있는 것으로 보아야 한다. 이 명령어는 디렉터리들의 현재 허가 상태와 관계없이 실행 허가를 디렉터리들에 적용하거나, (사용자, 그룹이나 다른 사람들에게) 벌써 최소한 한번의 실행 허가가 설정된 적이 있는 파일에 실행 허가를 적용한다. 이 명령어는 '+'와 함께 사용되는 경우와 일반적인 파일들 (텍스트 파일들과 같이)에서는 실행 허가를 설정하지 않고 큰 디렉터리 트리에 그룹이나 다른 사람들이 접근할 수 있게 해주는 -R 옵션과 결합하여 사용될 경우, 이 두 경우에만 유용하다. 두 번째 경우는 "chmod -R a+rx"를 막 사용한 경우에 주로 발생하며, "chmod -R a+rx" 대신 'X'을 사용함으로써 같은 일을 할 수 있다.

s

셋유이드(setuid)
/ 기드(gid)

상세 설명은 특별한 모드들 섹션에 있다

t

스티키(sticky)

상세 설명은 특별한 모드들 섹션에 있다

이 세 가지 구성요소의 조합은 chmod 명령어에 의해 인식되는 문자열을 만든다. 쉼표로 다양한 기호적 모드들을 분리하므로 다양한 변화들을 지정할 수 있다.

특별한 모드들

chmod 명령어는 파일이나 디렉터리의 특별한 모드들이나 추가적인 허가들 역시 바꿀 수 있다. 그 기호적인 모드들은 setuid 나 setgid 모드들을 나타내기 위해서 s를 사용하고, sticky 모드를 나타내기 위해서 t를 사용한다. 이 모드들은 다른 클래스들이 지정되었지는 아닌지와 관계없이 적절한 클래스들에게만 적용될 수 있다. 대부분의 운영 시스템들은 8진법 모드들을 사용하여 특별한 모드들을 지정하는 것을 보조하고 있지만 어떤 운영체제들은 그렇지 않다. 이러한 시스템들에서는 오직 기호적인 모드들만 사용될 수 있다.

See also

Favorite site