CHMOD(1)

명칭
chmod - 파일의 모드를 변경한다

서식
chmod [ -fv -R [-H | -L | -P]] mode file ...

해설
chmod (은)는 지정된 파일의 모드를 mode 그리고 지정한 것으로 변경합니다.

옵션으로서 이하의 것이 있습니다:

-H  -R 옵션이 지정되어 있으면, 인수가 기호 연결 때, 그것을 더듬어 변경합니다. (디렉토리 트리 탐색중에 발견된 기호 연결은, 디폴트에서는 그 이상 추적하지 않습니다)

-L  -R 옵션이 지정되어 있으면, 모든 기호 연결을 더듬어, 링크처의 파일을 변경합니다.

-P  -R 옵션이 지정되어 있어도, 어느 기호 연결도 더듬지 않습니다. 이것이 디폴트입니다.

-R  지정된 파일 자신 만이 아니고, 그것들을 루트로 한다 디렉토리 계층을 재귀적으로 검색해 모드를 변경합니다.

-f  chmod 하지만 file 의 모드를 변경할 수 없었던 경우에, 진단 메세지를 표시하지 않습니다.

-h  파일이 기호 연결의 경우, 링크의 앞의 파일대신에 링크 자신의 모드를 변경합니다.

-v  chmod (을)를 장황하게 해, 모드가 변경되는 파일을 표시시킵니다. -v 하지만 여러 차례 지정되었을 경우, 파일의 구모드와 신모드가, 8 진수 및 심볼에서 표시됩니다.

-H, -L, -P 옵션은, -R 옵션이 지정되어 있지 않으면 무시됩니다. 또, 이것들이 복수 지정되면(자) 마지막에 지정한 것이 유효하게 됩니다.

파일의 모드의 변경은 그 파일의 소유자와 슈퍼 유저인 만큼 밖에 용서되고 있지 않습니다.

진단

모드
모드에는, 수치를 이용한 절대치 지정과 심볼에 의한 지정이 있습니다. 수치 지정에서는, 이하의 값을 ``or'' 그리고 조합한 8 진수를 이용합니다:

4000
    (set-user-ID-on-execution 비트) 이 비트가 세트 되고 있는 실행 가능 파일은, 파일을 소유하는 유저 ID 에 실효 유저 ID 를 설정되어 실행됩니다. set-user-id 비트를 세트 되고 있는 디렉토리는, 그 중에 작성되는 모든 파일 및 디렉토리의 소유자를 디렉토리의 소유자로 설정하는 것을 강제해, 작성하는 프로세스의 유저 ID 는 무관계가 됩니다. 이것은, 디렉토리가 존재하는 파일 시스템이 이 기능을 서포트하고 있는 경우에 한정됩니다: chmod(2) (와)과 mount(8) 의 suiddir 옵션을 참조해 주세요.
2000
    (set-group-ID-on-execution 비트) 이 비트가 세트 되고 있는 실행 가능 파일은, 파일을 소유하는 그룹 ID 에 실효 그룹 ID 를 설정되어 실행됩니다.
1000
    (스티키빗트) chmod(2) (와)과 sticky(8) (을)를 참조해 주세요.
0400
    소유자의 읽기를 허가.
0200
    소유자의 기입을 허가.
0100
    파일의 경우, 소유자의 실행을 허가. 디렉토리의 경우, 소유자의 검색을 허가.
0040
    그룹의 멤버의 읽기를 허가.
0020
    그룹의 멤버의 기입을 허가.
0010
    파일의 경우, 그룹의 멤버의 실행을 허가. 디렉토리의 경우, 그룹의 멤버의 검색을 허가.
0004
    다른 사람의 읽기를 허가.
0002
    다른 사람의 기입을 허가.
0001
    파일의 경우, 다른 사람의 실행을 허가. 디렉토리의 경우, 다른 사람의 검색을 허가.

예를 들면, 소유자에게 읽어들여·기입·실행을 허가해, 그룹의 멤버에 읽어들여·실행을 허가해, 다른 사람에게 읽어들여·실행을 허가해, set-uid 와 set-gid 를 지정하지 않는 절대치 지정의 모드는, 755 (400+200+100+040+010+004+001)가 됩니다.

심볼에 의한 지정은 이하의 문법에 따릅니다.

    mode         ::= clause [, clause ...]
    clause       ::= [who ...] [action ...] action
    action       ::= op [perm ...]
    who          ::= a | u | g | o
    op           ::= + | - | =
    perm         ::= r | s | t | w | x | X | u | g | o

who 심볼의 ``u'', ``g'', ``o''는 각각 유저, 그룹, 그 이외에 상당합니다. ``a''심볼은 ``ugo''를 지정했을 경우와 같게 됩니다.

perm 심볼은 모드의 각 비트를 이하와 같이 표현합니다.

r   읽기 허가 비트
s   실행시 setuid 및 실행시 setgid 비트
t   sticky 비트
w   기입 허가 비트
x   실행/검색 허가 비트
X   대상이 디렉토리인지, 변경전의 모드로 누군가의 실행/검색 허가 비트 하지만 서 있는 경우에, 실행/검색 허가 비트가 세트 됩니다. perm 심볼에서의 ``X''의 지정은, op 심볼을 ``+''로 연결할 때 마셔 의미가 있어, 다른 경우는 무시됩니다.
u   원래의, 파일의 소유자 허가 비트
g   원래의, 파일의 그룹 허가 비트
o   원래의, 파일의 소유자와 그룹 이외의 허가 비트

op 심볼의 기능은 이하와 같이 됩니다

+   perm 값이 지정되지 않으면,``+''는 아무 작용도 없습니다. who 심볼이 지정되어 있지 않으면, perm 값은 각각의 who 심볼의 대응하는 비트에 작용해, 그것을 umask 로 마스크 한 비트가 세트 됩니다. who 심볼이 지정되어 있으면, 그 perm 값이 설정됩니다.

-   perm 값이 지정되어 있지 않으면,``-''는 아무 작용도 없습니다. who 심볼이 지정되어 있지 않으면, perm 값은 각각의 who 심볼의 대응하는 비트에 작용해, 그것을 umask 로 마스크 한 비트가 클리어 됩니다. who 심볼이 지정되어 있으면, 그 perm 값이 클리어 됩니다.

=   who 심볼로 지정된 모드 비트가 클리어 됩니다. who 심볼이 지정 되어 있지 않으면, 소유자, 그룹, 그 외의 각 모드 비트가 클리어 되고 who 심볼이 지정되어 있지 않으면, perm 로 지정한 비트가, 소유자, 그룹, 그 외의 각각을 umask 로 마스크 한 것만 설정됩니다. who 심볼과 perm 하지만 지정되어 있으면, 그 값이 그대로 설정됩니다.

각 clause 그럼, 모드 비트를 조작하기 위한 오퍼레이션을 1 개 이상 기술하고 울어라 되지 않습니다. 그리고 각 오퍼레이션은 기술한 차례로 적용됩니다.

소유자와 그룹 이외의 ``o''에만 대해, ``s''나 ``t''의 편성의 perm 값이 지정되어도 무시됩니다.

사용예
644 파일을 누구라도 읽을 수 있도록(듯이) 해, 파일의 소유자만 기입해 가능하게 합니다.

go-w
    파일의 소유자 이외의 기입을 금지합니다.

=rw, +X
    umask 로 마스크되어 있지 않은 비트의 읽고 쓰기를 허가합니다만, 실행 허가는 현재 설정되어 있는 것을 보관 유지합니다.

+X  누군가가 실행/검색 가능한 파일이나 디렉토리라면, 모든 유저가 실행/검색할 수 있는 파일이나 디렉토리로 합니다.

755
u=rwx, go=rx
u=rwx, go=u-w
    누구라도 읽기와 실행을 할 수 있어, 소유자만 기입해 가능하게 되도록(듯이) 섬

go= 그룹이나 그 외의 유저에게 어떠한 허가도 주지 않습니다.

g=u-w
    그룹 비트를 유저 비트와 같게 합니다만, 그룹의 기입은 금지 합니다.

버그
naughty bit 를 위한 perm 옵션이 없습니다.

호환성
-v 옵션은 비표준이며, 스크립트중의 사용은 비추천입니다.

관련 항목
chflags(1), install(1), chmod(2), stat(2), umask(2), fts(3), setmode(3), symlink(7), chown(8), mount(8), sticky(8)

표준
chmod 유틸리티는, 표준에 없다 perm 심볼의 “t” (을)를 제외해 p1003.2 호환이 되도록(듯이) 만들어지고 있습니다.

역사
chmod 명령은 AT&T UNIX (으)로부터 도입되었습니다.