본문 바로가기
개발/리눅스

리눅스 시스템의 파일 권한

by leedonggeun 2022. 11. 6.

리눅스 시스템의 파일 권한을 왜 알아야할까?

대다수의 사용자는 파일의 권한을 신경쓰지 않습니다.
아무 파일이나 관리자 권한으로 실행할 때가 많으며, 일반적으로 파일의 권한을 따로 부여할 필요가 없기 때문입니다.

하지만 리눅스에서는 파일(디렉토리 등)의 권한을 적절히 조절하여 보안에 신경써야합니다.

예를 들어, 하나의 서버에 여러가지 성격의 프로세스가 띄워져있다고 생각해봅시다.
이 서버는 웹메일 솔루션과 그룹웨어 솔루션이 설치되어 있습니다.
이 웹메일 솔루션의 관리자는 webmail이라는 사용자, 그룹웨어 솔루션의 관리자는 gw 라는 사용자를 사용합니다.
그룹웨어 관리자가 작업을 하다가 잘못해서 웹메일에서 사용하던 디렉토리/파일을 삭제하면 웹메일의 관리자는 눈물을 흘릴 것입니다.

이런 사고를 방지하기 위해 리눅스 시스템의 파일 권한을 알아봅시다.

1. 권한의 종류

권한에는 아래와 같이 세가지의 종류가 있습니다.

  • 읽기 (Read): 파일을 읽을 수 있는 권한 (cat, more, vi, nano 등)
  • 쓰기 (Write): 파일을 수정하거나, 작성하거나, 삭제할 수 있는 권한
  • 실행 (Execute): 파일을 실행할 수 있는 권한 (쉘 스크립트 실행)

2. 파일의 권한 확인하기

ls -l을 이용하여 파일 리스트를 확인할 수 있으며, 가장 좌측에 나오는 drw~~~ 로 시작되는 10개의 문자로 구성됩니다.

[root@private-my-server home]# ls -l
total 0
drwxr-xr-x. 3 root root  28 Mar 27  2022 dglee
drwxr-xr-x. 3 root root  71 Feb  5  2022 homepage-api
drwx------. 5 opc  opc  174 Apr 25  2022 opc

3. 권한에 대해 알아보기

권한은 위에서 말했듯, 10개의 문자로 구성되어있습니다.

1번째 문자 파일의 성격

문자 설명
d 디렉토리
l 링크
- 파일

2~4번째 문자 소유자가 갖는 권한

5~7번째 문자 소유자가 속한 그룹이 갖는 권한

8~10번째 문자 소유자 외의 다른 사용자가 갖는 권한

즉, 위의 예제에 있는 파일의 권한은 디렉토리이며, 소유자는 읽기(r), 쓰기(w), 실행(x) 권한을 갖고 있으며,
그 소유자가 속한 그룹과 그 외 사용자는 읽기(r)와 실행하기(x) 권한을 갖는다는 것을 알 수 있습니다.


4. 권한 변경하기

권한은 chmod 라는 명령어로 변경이 가능합니다. 

chmod [변경하고자 하는 권한] [리소스 이름]

4-1. 권한을 문자로 표현

구분 기호 설명
사용자
(대상)
u 소유자를 의미합니다.
g 그룹을 의미합니다.
o 소유자와 속한 그룹을 제외한 타 사용자를 의미합니다.
a All. 모든 사용자를 의미합니다.
  아무것도 작성하지 않는다면 All로 인식됩니다.
명령
(연산)
+ 추가
- 제거
= 지정, 기존의 값은 삭제됩니다.
ex) chmod u=wrx /app/test
권한 r 읽기
w 쓰기
x 실행하기

사용 예시

chmod u=rwx example/            (사용자에게 읽기, 쓰기, 실행하기 권한 부여)
chmod u+x,go=rw example/     (사용자는 실행권한 추가 / 그룹, 기타 사용자는 읽기, 쓰기 권한 부여)
chmod g-w example/                (그룹에게서 쓰기 권한 제거)

4-2. 권한을 숫자로 표현

권한을 8진수 표기법을 이용하여 설정할 수 있습니다.
3자리의 8진수를 통해 소유자, 그룹, 기타 사용자에게 적절한 권한을 부여할 수 있습니다.
r(읽기, 4), w(쓰기, 2), x(실행, 1)

chmod [8진수][8진수][8진수] [리소스 이름]
8진법 2진법 파일 권한 모드
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

사용 예시

chmod 777 example/                        (모든 사용자, 그룹에게 모든 권한 부여)
chmod 744 example/                        (소유자는 모든 권한, 그룹과 기타 사용자는 읽기 권한만 부여)

5. 마치며...

취약점 중 CCE(Common Configuration Enumeration)에 해당하는 항목 중 하나입니다.
반드시 파일 권한은 소유자에게 허락된 권한을 적절히 부여해야합니다.

이 글을 통해 앞으로 서버 내 파일의 권한을 적절히 조절할 수 있길 바랍니다.

'개발 > 리눅스' 카테고리의 다른 글

su: Authentication failure  (0) 2023.12.08
리눅스의 useradd 명령어에 대해 알아보자  (0) 2022.11.25

댓글