본문 바로가기
Programming/Linux

[Linux] 파일/디렉토리 접근권한 제어 (chmod)

by 고양이해적 2022. 10. 2.

리눅스의 가장 기본적인 보안기능 중 하나는 사용자의 파일을 보호하는것으로,

이 때문에 파일을 생성하는 소유자가 권한을 기본적으로 갖는다.

 

📌 chmod (Change Mode)

파일/디렉토리에 대한 접근권한을 재지정 한다.

 

파일권한은 세가지로 나눌수 있다.

 

  1. read : 읽기, 복사
  2. write : 수정, 이동, 삭제
  3. excute : 쉘스크립트 실행 권한

 

파일권한을 재지정하는 모드는 크게 두가지가 있는데 

그 중 기호모드는 user,group,other,all의 역할만 구분하면 된다.

 

mode 표기 예시
기호(연산자)모드 u(user), g(group), o(other), a(all) 

+(추가,부여), -(제거), =(지정,설정)
u+w : user에게 write를 부여
u-x : user에게 excute 제거
o-r : other에게 read 제거
u=rwx : user에게 읽기,쓰기,실행 권한을 지정
숫자모드 8진수로 표기 755, 777

 

📌 chmod 기호모드 예시

 

예) p.txt파일을 기호모드로 사용자(user)에게 실행권한 부여하기 

chmod u+x 파일명

 

이제 p.txt 파일의 접근 권한은 아래와 같다.

 

rwxrw-r--

rwx : 소유자(생성자)는 읽기 및 복사, 쓰기 및 삭제, 실행 등의 모든 권한이 있고

rw- : 그룹은 읽기 및 복사, 쓰기 및 삭제는 되지만 쉘스크립트 실행은 못한다.

r-- : 그 외(other) 는 읽기 및 복사만 가능하다.

 

 

📌 chmod 숫자모드(8진수)?

 

8진수로 644의 권한값을 가진 p.txt 파일

 

p.txt 파일을 2,10,8진수로 표기하면 다음의 표로 정리 할 수 있다. 

 

  user group other
rwx r w - r - - r - -
2진수 표기 1 1 0 1 0 0 1 0 0
10진수 표기 4 2 0 4 0 0 4 0 0
8진수 표기 6 4 4

 

 

✅  2진수 [0 ~ 1]

user는 read,write 권한이 있으니 2진수표기에 따라

1씩 값을 주고 excute 권한은 없으니 0인 값을 준다.
(group,other도 마찬가지)

 

✅  10진수 [0 ~ 9]

아래 표에 따라 4,2,1 의 값을 준다.

 

<2의 거듭제곱 표기>

제곱꼴 값(10진수)
2⁰ 1
2
4

 

✅  8진수 [0 ~ 7]

10진수 표기의 합을 더한다.

 

 

📌 chmod 숫자모드(8진수) 예시

 

p.txt 파일을 소유자를 제외한 나머지 그룹은 수정 할 수 없도록 하고 싶을때

chmod 755 파일명

 

위에서 표로 정리한대로 간단히 요약하면 이렇다.

rwxr-xr-x

rwx : 소유자(생성자)는 4+2+1=7

r-x : 그룹은 4+0+1=5

r-x : 그 외(other)는 4+0+1=5