[리눅스] Linux 파일 권한 관리 명령어(chmod)
리눅스는 하나의 컴퓨터를 여러 사용자가 사용할 수 있는 멀티유저 OS이다. 따라서 파일에 대한 권한을 관리하는 것이 보안상 중요하다. 특정 파일은 아무나 수정하지 못하게 하거나, 어떤 파일은 누구나 보고 수정할 수 있도록 관리하는 등의 경우가 있을 수 있다.
리눅스 파일, 디렉토리 권한 확인하기
ls -l 명령어를 사용하면 각 파일 및 디렉토리의 권한을 확인할 수 있다.
-rwxr-xr-x 1 pi pi 5720 Jul 3 20:06 a.out
-rw-r--r-- 1 pi pi 722 Jul 2 21:12 crontab.bak
-rw-r--r-- 1 pi pi 52 Jul 2 21:10 test.c
출력 결과는 각각 파일종류 및 권한(퍼미션), 링크수, 사용자(소유자), 그룹, 파일크기, 수정시간, 파일이름을 나타낸다.
a.out 파일의 권한은 '-rwxr-xr-x'으로 확인할 수 있고, 소유권은 pi pi로 확인된다.(앞에서부터 소유자, 그룹)
rwx는 각각 읽기(read), 쓰기(write), 실행(execute) 권한을 나타낸다. 참고로 디렉토리에 들어가기 위해선 실행권한이 있어야 한다. 권한은 4부분으로 나뉜다.
- rwx r-x r-x
처음의 -자리는 파일(-)인지 디렉토리(d)인지에 대한 구분이다.
rwd : 사용자 권한(owner)
r-x : 그룹(group) 권한
r-x : 다른 사용자(other) 권한
파일의 권한 변경(chmod)
파일이나 디렉토리의 권한을 변경하기 위해선 chmod 명령어를 사용해야 한다.
아래 예시와 같이 사용대상별로 개별적으로 권한 변경이 가능하다. 사용자는 u 사용자, g 그룹, o 다른사용자, a 전부로 구분할 수 있고, +는 권한을 부여하고 -는 권한을 빼앗는다.
chmod g+w test.py # 그룹에 test.py의 쓰기 권한 부여
chmod o-r test.py # 다른 사용자들의 test.py의 읽기 권한 박탈
chmod g+rwx test.py # 그룹에 test.py의 읽기, 쓰기, 실행 권한 부여
chmod go+rw test.py # 그룹과 다른 사용자에게 test.py의 읽기, 쓰기 권한 부여
그런데 이러한 방식은 조금 번거롭다. 그래서 숫자로 한 번에 권한을 변경하는 방식을 많이 사용한다.
chmod 000 test.py : 사용자, 그룹, 다른사용자의 모든 권한을 제거한다.
chmod 777 test.py : 사용자, 그룹, 다른사용자의 모든 권한을 추가한다.
chmod 700 test.py : 사용자에게만 모든 권한을 준다.
chmod 744 test.py : 사용자에게는 모든 권한을 주고, 그룹, 다른 사용자에게는 읽기 권한만 준다.
읽기는 4, 쓰기는 2, 실행은 1로 나타내며 필요한 권한을 더해서 지정할 수 있다. 즉, 위에서 chmod 744는 아래와 같이 해석 가능하다.
- 사용자 : r + w + x = 4 + 2 + 1 =7
- 그룹 : r-- = 4
- 다른 사용자 : r-- = 4
Reference