[Linux] 리눅스 파일 권한 설정(chmod, chown, setuid)
문제 상황
리눅스 운영체제를 사용하다보면 파일 권한을 변경해야 할 일이 있다.
제일 많이 쓰는 chmod 400 000.pem
..
사실 chmod를 무지성으로 많이 사용했었는데 이번 기회에 리눅스 파일 권한 설정에 대해 알아보겠다.
리눅스 파일 권한
리눅스에 접속하여 ls -l
명령어를 쳐보자. 다음과 같은 결과가 나올 것이다 (이건 맥에서 친거긴 하지만 비슷하게 나온다)
저기서 맨 앞의 -rw-r--r--을 살펴보자.
파일 vs 디렉토리
맨 앞의 d, - 를 살펴보자.
d는 디렉토리를 의미하고 -는 파일을 의미한다.
User, Group, Other
리눅스의 파일 사용자 접근 권한은 User, Group, Other로 나뉜다.
User는 소유자, Group은 소유자가 속한 그룹, Other는 그 외를 의미한다.
읽기, 쓰기, 실행
파일의 사용의 권한은 읽기, 쓰기, 실행으로 구분된다.
예시
예시로 한번 살펴보자.
- rwxrwxrwx의 권한을 가진 파일이 있다고 가정하자.
User | Group | Other | ||||||
읽기 | 쓰기 | 실행 | 읽기 | 쓰기 | 실행 | 읽기 | 쓰기 | 실행 |
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
이는 파일을 읽고 쓰고 실행할 수 있는 권한이 User, Group, Other에게 모두 있다는 뜻이다.
- rwxr--r--의 권한을 가진 파일이 있다고 가정하자.
User | Group | Other | ||||||
읽기 | 쓰기 | 실행 | 읽기 | 쓰기 | 실행 | 읽기 | 쓰기 | 실행 |
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | - | - | 4 | - | - |
이는 파일을 읽고 쓰고 실행할 수 있는 권한은 소유자에게만 있고 Group과 Other은 파일을 읽을 수만 있다는 뜻이다.
파일 권한 숫자로 표현하기
밑의 표의 숫자를 보고 어느정도 예상했겠지만 저 rwx 각각의 알파벳은 숫자로 표현될 수 있다. 각 알파벳은 위치에 따라 2의 지수 승으로 숫자를 가진다.
숫자 | 알파벳 | 권한 |
0 | --- | 권한무 |
1 | --x | 실행 |
2 | -w- | 쓰기 |
3 | -wx | 쓰기&실행 |
4 | r-- | 읽기 |
5 | r-x | 읽기 & 실행 |
6 | rw- | 읽기 & 쓰기 |
7 | rwx | 읽기 & 쓰기 & 실행 |
이쯤에서 다시 알아보는 chmod 400 000.pem
의 뜻
소유자에게만 읽기 권한을 주고 Group, Other에게는 권한을 아예 주지 않겠다는 뜻이다!
파일 권한 변경 명령어(chmod, chown, setuid)
파일의 권한을 변경할 수 있는 명령어를 살펴보겠다.
chmod - 파일 권한 변경
chmod [OPTION]… [MODE]… file… 파일/디렉토리 권한의 변경
- chmod 777 hello.txt : 숫자값을 통한 user/group/other 에 rwx 권한 부여
- chmod 700 hello.txt : 숫자값을 통한 user 에 rwx 권한 부여 (group/other 에는 --- 권한 부여)
- chmod u+x hello.txt : user 에 x(실행) 권한 추가
- chmod u-x hello.txt : user 에 x(실행) 권한 삭제
chown - 파일 소유권 변경
chown [OPTION]… [USER][:GROUP] FILE… 파일/디렉토리의 소유자/그룹 변경
chgrp [OPTION]… [GROUP] FILE… 파일/디렉토리의 그룹 변경
- chown user2 hello.txt : 해당 파일(hello.txt) 의 소유자를 user2 로 변경
- chown user2:user2 hello.txt : 해당 파일(hello.txt) 의 소유자와 그룹을 모두 user2 로 변경
- chown :user2 hello.txt : 해당 파일(hello.txt) 의 그룹을 user2 로 변경
- chgrp user2 hello.txt : 해당 파일(hello.txt) 의 그룹을 user2 로 변경
setuid - 파일의 특수 실행 권한
파일의 권한을 일시적으로 소유주(setuid) 혹은 소유그룹(setgid)의 권한으로 빌려서 실행함
Sticky bit은 해당 디렉토리에 생성된 파일은 해당 사용자의 소유주로 저장됨
- SetUID 는 4xxx, SetGID 는 2xxx 로, StickyBit 은 1xxx 로 설정한다. 각각 설정 위치는 rws------, rwxrws---, drwxdrxdwt 로 표시된다.
- 기존 권한의 위치에 덮어쓰기 때문에, 해당 기능만 존재할 경우 대문자 S/S/T 로 표기 된다. 각각 설정 위치는 rwS------, rwxrwS---, drwxdrxdwT 로 표시된다. 기존 권한 (실행권한) 을 포함하고 있는 경우 소문자 s/s/t로 표시된다.
- chmod u+s filename
- chmod g+s filename
- chmod +t directoryname
마치면서
무지성으로 사용하던 파일 권한 명령어에 대해 알아보았다.
다음 글에서는 sudo를 무지성으로 쓰던 것에서 벗어나 리눅스로 사용자들에게 권한을 부여하고 pem 키 없이 서버에 접속하게 하는 방법에 대해 알아보겠다.
참조
SWM 박수현 멘토님 멘토링