문제 상황

 

리눅스 운영체제를 사용하다보면 파일 권한을 변경해야 할 일이 있다.
제일 많이 쓰는 chmod 400 000.pem..
사실 chmod를 무지성으로 많이 사용했었는데 이번 기회에 리눅스 파일 권한 설정에 대해 알아보겠다.

 

리눅스 파일 권한

 

리눅스에 접속하여 ls -l 명령어를 쳐보자. 다음과 같은 결과가 나올 것이다 (이건 맥에서 친거긴 하지만 비슷하게 나온다)

 

 

저기서 맨 앞의 -rw-r--r--을 살펴보자.

 

파일 vs 디렉토리

 

맨 앞의 d, - 를 살펴보자.
d는 디렉토리를 의미하고 -는 파일을 의미한다.

 

User, Group, Other

 

리눅스의 파일 사용자 접근 권한은 User, Group, Other로 나뉜다.
User는 소유자, Group은 소유자가 속한 그룹, Other는 그 외를 의미한다.

 

읽기, 쓰기, 실행

 

파일의 사용의 권한은 읽기, 쓰기, 실행으로 구분된다.

 

예시

 

예시로 한번 살펴보자.

 

  1. 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에게 모두 있다는 뜻이다.

 

  1. 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 박수현 멘토님 멘토링