chmod 란
리눅스에서 파일 사용 권한을 변경하는 명령어로써 change mode의 약어이다. 파일과 디렉터리의 사용권한을 변경할 때 사용하며 8진법 모드와 문자열 모드로 권한을 설정할 수 있다. 대부분 8진법 모드가 간단해서 널리 사용된다.
사용법
chmod
명령어의 기본 형태는 아래와 같다. 여기서 옵션과 모드에 대해서 알아보자.
$ chmod [옵션] [모드] [파일]
옵션
옵션에는 아래와 같이 사용할 수 있다.
- R: 하위에 위치한 파일과 디렉터리 권한을 변경한다.
- v: 현재 실행되고 있는 모든 파일들을 나열한다.
- c: 실제로 변경된 파일들만 자세하게 출력한다.
문자열 모드
chmod
명령어는 문자를 통해 권한을 부여할 수 있다. 간단하게 사용할 수 있는 8진법 모드보다 더 직관적이다.
$ chmod [레퍼런스] [연산자] [모드] [대상이름]
레퍼런스는 아래와 같이 구분된다.
u
: 사용자(for owner), 파일의 소유자를 말한다.g
: 그룹(for group), 해당 파일의 그룹 멤버인 사용자o
: 다른 사람들(for others), 그 파일의 소유자 또는 그룹의 멤버가 아닌 사용자a
: 위의 셋 모두(for all) 포함,ugo
와 동일하다.
연산자는 아래와 같이 구분할 수 있다.
+
: 해당 권한을 추가한다.-
: 해당 권한을 제거한다.=
: 해당 권한을 지정한 권한으로 변경한다.
모드는 아래와 같이 구분할 수 있다.
r
: 읽기(read), 파일을 읽거나 디렉터리 안의 내용들을 볼 수 있다.w
: 쓰기(write), 파일이나 디렉터리에 쓴다.x
: 실행(execute), 파일을 실행할 수 있다.
8진법 모드
흔하게 볼 수 있는 8진수를 사용한 권한 설정 방법이다. 직관적이지는 않지만 사용법은 간단하다.
$ chmod [옵션] [8진법수] [대상이름]
파일의 권한을 보면 -rwxrwxrwx
와 같이 표기되는데, 맨 앞의 표기는 디렉터리는 d
, 심볼릭 링크와 같은 형태는 l
로 표기되는 ‘파일 분류 타입’ 이므로 생략하고, 이어지는 9개 문자를 3개로 나누어 각각 user, group, other의 권한으로 생각하면 된다.
파일 읽기 권한인 r
은 숫자 4, 파일 쓰기 권한인 w
는 2 그리고 파일 실행 권한은 x
는 1로 매핑하며, 이 문자들을 더한 값으로 권한을 지정할 수 있다. 예를 들면 -rwxr-xr-x
의 경우 755
와 매핑된다.
예시
이제 위에서 살펴본 방법들로 권한을 부여하는 예제들을 살펴보자.
# user 에게 test 파일에 대한 읽기, 쓰기 권한 부여
$ chmod u+rw test
# user 에게 test 파일에 대한 쓰기 권한만 부여
# group 에게 test 파일에 대한 읽기 권한 부여
$ chmod u=w, g+r test
# user 에게 읽기, 쓰기, 실행 권한 부여
# group, other에게 읽기, 실행 권한 부여
$ chmod 755 test