Linux는 여러 사용자가 들어와 사용하는 멀티유저 시스템이다. 그렇기 때문에 원하지 않는 사용자가 서버에 올려진 중요 자료를 열람하거나 수정, 삭제를 할 우려가 생기게 된다. 이 문제를 해결하기 위한 기능이 permission(권한)이다. 파일을 최초로 만든 사용자가 파일의 소유권을 가진다.
1. 허가권(permission)
파일에 대한 소유자와 소유그룹, 기타 사용자의 권한을 지정한다.
[root@Linux ~]# ls -l -rw-r--r--. 1 root root 0 4월 26 15:05 a1.txt |
앞에서부터 세 개씩 끊어 각각 소유자(rw-), 소유그룹(r--), 게스트사용자(r--)를 의미한다.
권한 | 파일 | 디렉토리 |
r(read) | 파일을 읽을 수 있다 | 디렉토리 내용을 표시 가능 |
w(write) | 파일에 대한 쓰기 권한 * 단, 이름 변경이나 파일 삭제는 허용하지 않음. (파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정됨) |
디렉토리 내의 파일들을 생성, 삭제, 이름변경, 디렉토리 내 파일 이동이 가능 |
x(execute) | 파일을 실행가능 | 디렉토리에 접근할 수 있는 가장 기본적인 권한 |
- 권한이 없으면 -로 표현( ex.읽기 권한만 있을 경우 -> r - -)
- 보편적으로 x권한만으로는 파일을 볼 수 없으니 r-x권한을 준다.
- 디렉토리에 대한 x권한이 없다면 그 디렉토리에 들어갈 수 없다
2. 소유권(ownership)
지정된 허가권에 해당하는 소유자와 소유그룹을 지정
[root@Linux ~]# ls -l -rw-r--r--. 1 root root 0 4월 26 15:05 a1.txt |
앞에서부터 소유자와 소유그룹이며 게스트 사용자는 소유자와 소유그룹 외의 모든 사용자로 소유권에 표기되지 않는다.
3. 권한 해석 예제
[root@Linux dir] # ls -la total 20 drwxrwxr-x. 2 dbadmin1 webteam 68 Apr 27 10:11 . dr-xr-x---. 8 dbadmin1 root 4096 Apr 27 10:19 .. dr-xr-x---. 1 webadmin1 webadmin1 4 Apr 27 10:19 app1.log -rw-r--rw-. 1 webadmin1 webteam 4 Apr 27 10:19 app2.log -rw-rw-r--. 1 dbadmin1 webteam 4 Apr 27 10:19 db1.log -rw-r-----. 1 dbadmin1 webteam 4 Apr 27 10:19 db2.log [root@Linux dir] # tail -n 6 /etc/group webadmin1:x:1003 webteam:x:1017:webadmin1, dbadmin1 dbadmin1:x:1004: dbadmin2:x:1005: dbteam:x:1018:dbadmin2,vmadmin vmadmin:x:1016: |
사용자 (그룹명) |
권한 | app1.log | app2.log | db1.log | db2.log | 디렉토리 (파일삭제) |
webadmin1 (webteam) |
읽기 | ◯ | ◯ | ◯ | ◯ | ◯ |
수정 | ◯ | ◯ | ◯ | ✕ | ◯ | |
dbadmin1 (webteam) |
읽기 | ◯ | ◯ | ◯ | ◯ | ◯ |
수정 | ✕ | ✕ | ◯ | ◯ | ◯ | |
dbadmin2 (dbteam) |
읽기 | ◯ | ◯ | ◯ | ✕ | ◯ |
수정 | ✕ | ◯ | ✕ | ✕ | ✕ | |
vmadmin (dbteam) |
읽기 | ◯ | ◯ | ◯ | ✕ | ◯ |
수정 | ✕ | ◯ | ✕ | ✕ | ✕ |
-> 자신의 하위 파일에 대한 쓰기(w) 권한이 없어도 자기가 소유한 디렉토리에 대한 쓰기 권한이 있으면 파일의 내용수정은 할수없어도 파일 자체의 삭제는 가능하다.
즉, A디렉토리에 대한 w권한이 있으면 A디렉토리의 하위 파일을 삭제를 할 수 있다.