기본 포맷 : chmod [option] {MODE} {file_name}
파일의 허가권 변경
root나 파일의 소유자만 실행가능한 명령어
chmod 777 sample.txt => sample.txt 파일을 모든 사용자가 읽고 쓰고 실행할 수 있게 하겠다.
?? 뭐야 왜 숫자가 나와?? 7이 뭔데?? 라고 한다면
권한을 숫자로 표현하기 때문이다
r (4) read
w (2) write
- (0) none
++ x는 어차피 필요한 권한
x가 없으면 디렉터리에 접근조차 불가능
x (1) execute
7인 여기서 rwx까지 포함한 권한이다.
옵션들을 알아보자
OPTION
-v : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력
-f : 에러 메시지 출력하지 않음
-c : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력
-R : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용
MODE
u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정
+,-,= : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
r,w,x : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
X : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용
s : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid"
t : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit
0~7 : 8진수(octet) 형식 모드 설정 값
chmod를 다르게도 쓸 수 있다.
$ chmod u+x FILE # 파일 소유 사용자에게 실행권한 추가.
$ chmod u+w FILE # 파일 소유 사용자에게 쓰기 권한 추가.
$ chmod u=rwx FILE # 파일 소유 사용자에게 읽기, 쓰기, 실행 권한 지정.
$ chmod u-x FILE # 파일 소유 사용자의 실행 권한 제거.
$ chmod g+w FILE # 파일 소유 그룹에 쓰기 권한 추가.
$ chmod g-x FILE # 파일 소유 그룹의 실행 권한 제거.
$ chmod o=r FILE # 파일 소유 사용자 및 그룹을 제외한 사용자는 읽기만 가능.
$ chmod a-x * # 현재 디렉토리의 모든 파일에서 모든 사용자의 읽기 권한 제거.
$ chmod a-w FILE # 모든 사용자에 대해 쓰기 권한 제거.
$ chmod u=rwx,g=r FILE # 파일 소유 사용자는 모든 권한, 그룹은 읽기만 가능.
$ chmod ug=rw FILE # 파일 소유 사용자와 그룹이 읽기, 쓰기 가능.
$ chmod g=rw,o=r FILE # 파일 소유 그룹은 읽기, 쓰기 가능, 그 외 사용자는 읽기만 가능.
$ chmod ug=rw,o=r FILE # 파일 소유 사용자 및 그룹은 일기, 쓰기 가능, 그외 사용자는 읽기만 가능.
$ chmod 000 FILE # 모든 사용자의 모든 권한 제거. = ---------
$ chmod 664 FILE # 사용자(읽기+쓰기), 그룹(읽기+쓰기), 그외 사용자(읽기) = rw-rw-r--
$ chmod 755 FILE # 사용자(읽기+쓰기+실행), 그룹(읽기+실행), 그외 사용자(읽기+실행) = rwxr-xr-x
$ chmod 777 FILE # 모든 사용자에 모든 권한 추가.
$ chmod -R g+x DIR # DIR 디렉토리 하위 모든 파일 및 디렉토리에 그룹 실행(x) 권한 추가.
$ chmod -R o-wx * # 현재 디렉토리의 모든 파일에서 그외 사용자의 쓰기, 실행 권한 제거
$ chmod -R a-x,a+X * # 현재 디렉토리 기준 모든 파일 읽기 권한 제거, 디렉토리 실행 권한 추가.
$ chmod -R a-x+X * # 위(chmod -R a-x,a+X *)와 동일.