본문 바로가기

Red Hat Linux

Linux File 권한 - Red Hat Enterprise Linux Technical Overview (7)

 

Linux 파일 시스템 권한

Linux 파일 시스템 권한은 read, write, execute 세 가지 종류가 있다. 파일 권한은 다음과 같이 10자리로 표기 되는데, 가장 첫 글자는 파일의 종류(🔗) (디렉토리인지 혹은 일반 파일인지 등)를 나타내고, 나머지 9글자가 파일 시스템 권한을 나타낸다. 3글자씩 차례대로 파일의 소유자(u) / 파일의 소유 그룹(g) / 그 외 (o)의 권한을 나타낸다. 이 때 '그 외'는 소유자나 소유 그룹에 속하지 않은 모든 사람을 뜻한다.

 

출처 : 「 RH024 Red Hat Enterprise Linux Technical Overview 」

 

 

 

파일 정보 출력

`ls -ld 파일명` 명령어를 수행하면 해당 파일에 대한 정보를 상세하게 확인할 수 있다. 

[root@servera ~]# ls -ld /common
drwxr-xr-x. 2 root root 6 Apr 17 17:52 /common

 

 

 

drwxr-xr-x  의미 파악

1) 첫 번 째 글자인 `d`는 common이 디렉토리임을 알려준다. rwx는 첫 번 째 `root`와 관련이 있다. 해당 파일의 소유자가 `root`이며, `root`는 읽기(r), 쓰기(w), 실행하기(x) 세 개의 권한을 모두 가진다. 

2) 다음 `r-x`는 두 번 째 `root`와 관련이 있다. 그룹 소유자는 root라는 그룹이며, 해당 그룹은 읽기(r)와 실행하기(x) 권한만 가진다. 

3) 마지막 `r-x`는 나머지(other)의 권한을 뜻한다. 역시 읽기(r)와 실행하기(x) 권한만 가진다.  

 

 

 

drwxr-xr-x  해석하기

root도 아니고 root 그룹에도 속해있지 않은 유저 'student'는 '그 외'로서, 마지막 3글자인 `r-x` 권한을 가지고 있을 것이다. 따라서 student 유저는 `cd /common`으로 디렉토리를 옮긴 후 `ls` 명령어를 수행할 수 있다. 

[student@servera ~]$ cd /common
[student@servera common]$ ls
[student@servera common]$

 

그러나 student 유저는 파일을 생성할 수는 없다. w(쓰기)  권한은 없기 때문이다. 

[student@servera common]$ touch file
touch: cannot touch 'file': Permission denied

 

 

 

쓰기 권한 주기

root로 로그인한 후 `chmod o+w /common` 명령어를 수행하면 /common에 대해 other에게 쓰기 권한을 주게 된다. 출력결과를 보면 마지막 세 글자가 `rwx`로  other에게 w(쓰기)  권한이 주어진 것을 확인할 수 있다. 그 후 파일을 생성해보면 성공한다. 

[root@servera common]$ ls -ld /common
drwxr-xrwx. 2 root root 6 Apr 17 17:52 /common

 

 

 

소유주와 소유그룹 변경하기

파일의 소유주와 소유그룹을 변경하기 위해서는 `chown 소유자명:소유그룹명 파일명` 명령어를 수행하면 된다. /common 폴더의 소유자는 student로, 소유그룹은 paul로 변경하기 위해서 다음과 같이 명령을 수행할 수 있다. 

[root@servera common]$ chown student:paul /common
[root@servera common]$ ls -ld /common
drwxr-xrwx. 2 student paul 6 Apr 17 17:52 /common

 

 

 

파일 권한 해석 시 주의점

paul은 `/common` 폴더에 쓰기 권한이 있을까? 파일 생성을 시도하면 실패하는 것을 알 수 있다. other가 write 권한이 있다고 해서 모든 사람에게 쓰기 권한이 주어진 것이 아니다. `drwxr-xrwx`는 처음부터 차례대로 읽어야 한다. paul은 소유주가 아니므로 첫 세 글자는 넘어가고, 소유 그룹에 속하는지 따져본다. 그룹 `paul`은  paul의 primary group이므로 paul은 소유 그룹에 속한다. 따라서 paul의 권한은 `r-x`인 것이다. 

 

 

 

파일 권한 뺏기

`chmod u-rwx /common`를 수행하면 /common 파일에 대해서 소유주의 rwx 권한을 빼앗는다. 이제 /common 디렉토리의 권한표기는 `d---r-xrwx`이 되었다. 

[root@servera ~]# ls -ld /common
drwxr-xrwx. 2 student paul 6 Apr 17 17:52 /common
[root@servera ~]# chmod u-rwx /common
d---xr-xrwx. 2 student paul 6 Apr 17 17:52 /common