개발

[Linux] chmod(change mode)로 접근 권한 지정하기

[참고]

 

# 하위 파일들까지 recursive하게 모든 권한 허용

chmod -R 777 파일명
리눅스에서 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있다.
  • 파일에 저장된 데이터를 읽기. (r = read).
  • 파일에 데이터를 쓰기. (w = write).
  • 파일 실행. (x = execute)

만약 리눅스 시스템의 모든 파일이 읽기, 쓰기, 실행 가능하게 만들어져 있다면 시스템에 중요한 역할을 하는 파일의 내용이 변경되거나, 사용자의 사소한 실수로 모든 파일이 삭제되어 버릴 수 있으므로 이런 문제를 방지하기 위해,

리눅스에서는 각 파일 및 디렉토리에 대해 읽기(r), 쓰기(w), 실행(x) 권한을 개별적으로 지정할 수 있게 하였다.

그리고 이 세 가지 권한을 파일을 소유한 사용자(user), 특정 그룹(group)에 소속된 사용자, 그 외 사용자(others)에 대해 각각 지정할 수 있게 만들었다.

 

chmod란?

  • 이러한 파일의 권한을 변경할 수 있게 만들어주는 명령어
  • change mode

 

chmod 사용법

[root@localhost~]$ chmod [OPTION] [MODE] [FILE]

 chmod 다음에 "선택 옵션"과 "모드를 나타내는 문자열", 그리고 "대상 파일(또는 디렉토리)"을 순서대로 입력하여 파일의 모드를 변경할 수 있다.

 

[OPTION]
-v : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
-f : 에러 메시지 출력하지 않음.
-c : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.

-R : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.

 

[MODE] : 파일에 적용할 모드(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) 형식 모드 설정 값.

 

8진수(octal) 형식으로 파일 모드(mode) 지정 방법

 

[예시]

# 모든 사용자가 읽고 쓰고 실행할 수 없도록 지정.
$ chmod 000 FILE
---------- 1 ppotta manager   23 Mar 26 04:13 FILE

# 모든 사용자가 읽고 쓰고 실행할 수 있는 권한 지정.
$ chmod 777 FILE
-rwxrwxrwx 1 ppotta manager   23 Mar 26 04:13 FILE

# 소유자는 모든 권한, 그룹 및 그 외 사용자는 읽기와 실행만 가능.
$ chmod 755 FILE
-rwxr-xr-x 1 ppotta manager   23 Mar 26 04:13 FILE

# 소유자 및 그룹은 읽기 가능, 그 외 사용자는 권한 없음
$ chmod 440 FILE
-r--r-----  1 ppotta manager   23 Mar 26 04:13 FILE

 

8진수 형식을 이용할 때는 MODE 파라미터로 전달되는 값이 파일의 권한에 그대로 적용되기 때문에 u, g, o, a 또는 =, +, - 등과 같이 사용할 수 없다.