chmod 명령

용도

파일 모드를 변경합니다.

구문

기호적으로 파일 모드를 변경하려면

chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }

숫자적으로 파일 모드를 변경하려면

chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }

설명

chmod 명령은 지정된 파일이나 디렉토리의 확장 액세스 제어 리스트(ACL) 및 모드 비트를 수정합니다. 모드를 기호나 수치(절대 모드)로 정의할 수 있습니다.

기호 링크를 발견하고 -h 플래그를 지정하지 않은 경우, chmod 명령은 링크 자체 모드가 아닌 링크가 가리키는 파일이나 디렉토리 모드를 변경합니다. -h 플래그를 지정한 경우, chmod 명령은 이 모드의 변경을 금지합니다.

-h 플래그 및 -R 플래그 양쪽 모두를 지정할 경우, chmod 명령은 지정한 디렉토리를 반복적으로 내리며, 기호 링크를 발견할 경우, 링크가 가리키는 파일 또는 디렉토리의 모드를 변경하지 않습니다.

플래그

항목 설명
-f 유효하지 않은 사용 권한 및 사용자 명령문을 제외하고 모든 보고되는 오류를 억제합니다.
-h 발견한 기호 링크가 가리키는 파일이나 디렉토리에 대한 모드 변경을 억제합니다.

주: 이 동작은 모드 비트가 기호 링크에서 설정될 수 없으므로, chgrpchown 명령에 대한 -h 플래그의 동작과 조금 다릅니다.

-R File...|Directory... 패턴으로 지정된 디렉토리만 반복적으로 내림차순으로 정렬합니다. -R 플래그는 지정한 패턴과 대응하는 모든 파일 및 각 디렉토리의 파일 모드 비트를 변경합니다. 예제 6을 참조하십시오.

기호 링크가 발견되고 링크가 디렉토리로 지정될 경우, 해당 디렉토리의 파일 모드 비트는 변경되지만 디렉토리는 더 이상 횡단되지 않습니다.

기호 모드

기호 양식으로 모드를 지정하려면 다음 세 가지 플래그 세트를 지정해야 합니다.

주: 공백으로 플래그를 분리하지 마십시오.

플래그의 첫 번째 세트는 지정한 권한을 부여하거나 부여하지 않은 사람을 다음과 같이 지정합니다.

항목 설명
u 파일 소유자입니다.
g 그룹 및 파일 그룹과 관련된 확장 ACL 항목입니다.
o 기타 모든 항목입니다.
a 사용자, 그룹, 기타 모든 항목입니다. a 플래그는 ugo 플래그를 함께 지정하는 것과 같은 효과를 갖습니다. 이러한 플래그를 전혀 지정하지 않으면 디폴트는 a 플래그이며, 파일 작성 마스크(umask)가 적용됩니다.

두 번째 플래그 세트는 권한을 제거, 적용 또는 설정할지를 지정합니다.

항목 설명
- 지정된 권한을 제거합니다.
+ 지정된 권한을 적용합니다.
= 선택한 권한 필드를 지우고 필드를 지정한 권한으로 설정하십시오. 권한과 =를 지정하지 않으면 chmod 명령은 선택된 필드에서 모든 권한을 제거합니다.

세 번째 플래그 세트는 제거, 추가 또는 설정할 권한을 지정합니다.

항목 설명
r 읽기 권한입니다.
w 쓰기 권한입니다.
x 파일에 대해서는 실행 권한, 디렉토리에 대해서는 검색 권한입니다.
X 현재(수정하지 않은) 모드 비트가 최소한 한 사람의 사용자, 그룹이나 다른 실행 비트 세트를 가질 경우, 파일에 대해서는 실행 권한입니다. X 플래그는 File 매개변수가 지정되고 현재 모드 비트에 실행 비트가 설정되지 않은 경우 무시됩니다.

디렉토리에 대해서는 검색 권한입니다.

s u 플래그가 지정되거나 함축된 경우 Set-user-ID-on-execution 권한에 해당합니다. g 플래그가 지정되거나 함축되면 Set-group-ID-on-execution 권한에 해당합니다.
t 디렉토리에 대하여, 파일 소유자만이 지정한 디렉토리에서 파일을 링크하거나 링크 해제할 수 있음을 나타냅니다. 파일의 경우 save-text 속성을 설정합니다.

숫자 또는 절대 모드

또한 chmod 명령은 사용자가 모드에 대하여 8진 표기법을 사용하도록 허용합니다. 숫자 모드는 하나 이상의 다음 값의 합계입니다.

항목 설명
4000 실행 시 사용자 ID를 설정합니다.
2000 실행 시 그룹 ID를 설정합니다.
1000 디렉토리에 대한 링크 권한을 설정하거나 파일에 대한 save-text 속성을 설정합니다.
0400 소유자에 의한 읽기를 허용합니다.
0200 소유자에 의한 쓰기를 허용합니다.
0100 소유자에 의한 실행이나 검색을 허용합니다.
0040 그룹에 의한 읽기를 허용합니다.
0020 그룹에 의한 쓰기를 허용합니다.
0010 그룹에 의한 실행이나 검색을 허용합니다.
0004 제3자에 의한 읽기를 허용합니다.
0002 제3자에 의한 쓰기를 허용합니다.
0001 제3자에 의한 실행이나 검색을 허용합니다.
주:
  1. 숫자 모드를 지정하면 모든 확장 ACL이 사용 불가능하게 됩니다. 자세한 정보는 운영 체제 및 장치 관리의 "액세스 제어 리스트(ACL)"를 참조하십시오.
  2. 기호적 측면에서 그룹 액세스 권한 변경은 AIXC ACL 항목에도 영향을 줍니다. 파일의 소유 그룹과 같은 ACL의 그룹 항목은 모드에서 제거된 사용 권한에 의해 거부됩니다. 자세한 정보는 운영 체제 및 장치 관리의 "액세스 제어 리스트(ACL)"를 참조하십시오.
  3. 여러 개의 기호 모드를 쉼표로 분리하여 지정할 수 있습니다. 조작은 왼쪽에서 오른쪽으로 표시되는 순서로 수행됩니다.
  4. 실행 시 그룹 ID 설정 권한을 디렉토리에서 제거할 경우 모드를 기호로 지정하거나 0으로 시작하는 명시적 4자리수 8진수(예: 0755)를 사용해야 합니다.
  5. 비AIXC ACL 연관 파일 시스템 오브젝트의 경우 조작이 모드 비트의 기본 권한 비트(rwxrwxrwx)를 변경하는 모든 요청(기호 또는 숫자 관련)으로 인해 기존 ACL을 모드 비트만으로 대체합니다.
  6. save-text 속성은 루트 사용자만 설정하고 일반 사용자가 제거할 수 있습니다.

종료 상태

이 명령은 다음 종료값을 리턴합니다.

항목 설명
0 정상적으로 명령이 실행되었고 요청된 모든 변경이 수행되었습니다.
>0 오류가 발생했습니다.

보안

액세스 제어

이 프로그램은 신뢰있는 전산구조(TCB)의 일반 사용자 프로그램으로 설치되어야 합니다.

파일의 소유자나 루트 사용자만이 파일의 모드를 변경할 수 있습니다.

RBAC 사용자 및 신뢰할 수 있는 AIX® 사용자에 대한 주의: 이 명령은 특권 조작을 수행할 수 있습니다. 특권이 있는 사용자만 특권 조작을 실행할 수 있습니다. 권한 부여와 특권에 대한 자세한 정보는 보안의 특권 명령 데이터베이스를 참조하십시오. 이 명령과 연관된 특권 및 권한 부여 리스트에 대해서는 lssecattr 명령 또는 getcmdattr 부속 명령을 참조하십시오.

예제

  1. 권한의 유형을 여러 개의 파일에 추가하려면 다음과 같이 입력하십시오.
    chmod  g+w  chap1  chap2
    그러면 그룹 멤버에 대한 쓰기 권한이 chap1chap2 파일에 추가됩니다.
  2. 여러 개의 권한을 한 번에 변경하려면 다음과 같이 입력하십시오.
    chmod  go-w+x  mydir
    이 경우 그룹 멤버 및 다른 대상에게 mydir(go-w)에서 파일을 작성하거나 삭제하는 권한을 거부하고, 그룹 멤버 및 다른 대상이 mydir을 검색하거나 경로 이름에 이를 사용하는 권한을 허용합니다(go+x). 이는 다음 명령 시퀀스와 동일한 결과를 가져옵니다.
    chmod  g-w  mydir
    chmod  o-w  mydir
    chmod  g+x  mydir
    chmod  o+x  mydir
  3. 소유자만 쉘 프로시저를 명령으로 사용할 수 있게 하려면 다음과 같이 입력하십시오.
    chmod  u=rwx,go= cmd
    그러면 파일을 소유하고 있는 사용자에게 읽기, 쓰기, 실행 권한(u=rwx)이 부여됩니다. 또한 어떤 방법으로든(go=) 해당 그룹과 다른 그룹의 cmd 액세스 권한이 거부됩니다.

    cmd 쉘 명령 파일을 실행할 권한이 있으면 다음을 입력하여 실행할 수 있습니다.

    cmd

    주: PATH 쉘 변수에 따라 cmd 파일에 대한 전체 경로를 지정해야 할 수도 있습니다.

  4. ID 모드 설정을 사용하려면 다음과 같이 입력하십시오.
    chmod  ug+s  cmd
    cmd 명령이 실행되면 유효 사용자 및 그룹 ID가 cmd 파일을 소유한 ID로 설정됩니다. cmd 명령을 실행하는 하위 프로세스와 연관된 유효 ID만을 변경합니다. 쉘 세션의 유효 ID는 변경되지 않고 남아 있습니다.

    이 특징은 사용자가 제한된 파일에 액세스할 수 있게 합니다. cmd 프로그램이 사용 가능 사용자 ID 설정 모드를 갖고 dbms라는 사용자가 소유한다고 가정합니다. 사용자 dbms는 실제 사람이 아니지만, 데이터베이스 관리 시스템과 연관될 수 있습니다. 사용자 bettydbms의 데이터 파일의 액세스 사용 권한을 갖지 않습니다. 그러나 cmd 명령을 실행할 권한이 있습니다. 이를 수행하는 경우 그녀의 유효 사용자 ID는 임시로 dbms로 변경되므로 cmd 프로그램은 사용자 dbms가 소유한 데이터 파일에 액세스할 수 있습니다.

    이러한 방식으로 사용자 bettycmd 명령을 사용하여 데이터 파일에 액세스할 수 있지만, 표준 쉘 명령으로 이를 우연히 손상시키는 일은 발생하지 않습니다.

  5. chmod 명령의 절대 모드 양식을 사용하려면 다음을 입력하십시오.
    chmod  644  text
    그러면 소유자에 대한 읽기 및 쓰기 사용 권한을 설정하며, 그룹 및 제3자에 의한 읽기 전용 모드를 설정합니다. 또한 파일과 연관된 모든 확장 ACL을 제거합니다.
  6. 디렉토리를 재귀적인 내림차순으로 정렬한 후 트리 구조에 지정된 파일 및 디렉토리 권한을 변경하려면 다음과 같이 입력하십시오.

    ./dir1/dir2/file1

    ./dir1/dir2/file2

    ./dir1/file1

    다음 명령 시퀀스를 입력하십시오.

    chmod -R 777 f*
    그러면 이는 ./dir1/file1에 대한 사용 권한을 변경합니다.

    하지만, 부여된 트리 구조는 다음과 같습니다.

    ./dir1/fdir2/file1

    ./dir1/fdir2/file2

    ./dir1/file3

    이 때 다음 명령 시퀀스에서,

    chmod -R 777 f*
    다음에 대한 사용 권한을 변경합니다.

    ./dir1/fdir2

    ./dir1/fdir2/file1

    ./dir1/fdir2/file2

    ./dir1/file3

파일

항목 설명
/usr/bin/chmod chmod 명령을 포함합니다.