본문으로 바로가기

File ACL (Access Control List) 사용법

category Security/Linux Server 2017. 12. 28. 21:47

- File ACL

ACL은 파일과 디렉토리의 확장 속성 중에 하나이다. setfacl 명령어를 사용해서 파일의 소유자나 그룹을 더 만들수 있다. 또한 확장 속성의 정보를 확인 하기 위해서 getfacl 명령어를 사용할 수 있다. 파일의 확장 속성은 Shadow Inode에 저장되어 있다.



file1 에 대해서 user01 은 read , user02는 read/write , user03 은 read/write/execute 설정 가능한가?


- CMD

- getfacl    /* 파일의 확장 속성정보를 보여주는 명령어*/

- setfacl    /* 파일의 확장 속성정보를 설정하는 명령어*/


# getfacl file1


# setfacl -m [ACL] file1 

-m    권한을 지정하거나 수정할 때 사용

-x     권한 삭제

-R     하위 디렉터리 파일까지 권한 변경

-b    권한 밀 mask 등 지정한 권한 전부 제거 


- 사용법

# cd /test

# touch file1


# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rw-

group::r--

other::r--


 


# setfacl -m u::rwx file1

# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

group::r--

other::r--


 

> chmod  명령어와 같은 기능을 가진다. 


# setfacl -m u:user01:7 file1

# ls -l file1


 -rwxrwxr--+ 1 root root 0 12월 29 06:35 file1

 


# gerfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

user:user01:rwx

group::r--

mask::rwx

other::r--


 


# setfacl -m g:class1:7 file1


# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

user:user01:rwx

group::r--

group:class1:rwx

mask::rwx

other::r--


 


# setfacl -x u:user01 file1

# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

group::r--

group:class1:rwx

mask::rwx

other::r--


 


# setfacl -m u:user01:0 file1

# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

user:user01:---

group::r--

group:class1:rwx

mask::rwx

other::r--


 


# su - user01

$ ls -l /test/file1

 

 -rwxrwxr--+ 1 root root 0 12월 29 06:35 /test/file1

 

> user01 사용자는 other에 속하므로 r 권한이 있다. 

$ cat file1

 

 cat: /test/file1: 허가 거부됨

 

> r 권한이 있음에도 읽기가 거부됐다.  >> file acl에서 0으로 권한을 주었기 때문

$ exit


- 속성정보 파일 만들기

# getfacl file1

 

 # file: file1

# owner: root

# group: root

user::rwx

user:user01:---

group::r--

group:class1:rwx

mask::rwx

other::r--


 


# getfacl file1 > file.acl


# touch file2

# getfacl file2

 

 # file: file2

# owner: root

# group: root

user::rw-

group::r--

other::r--


 


# setfacl --set-file=file.acl file2

# getfacl file2

 

 # file: file2

# owner: root

# group: root

user::rwx

user:user01:---

group::r--

group:class1:rwx

mask::rwx

other::r--


 

> 여러 설정이 복잡하게 이루어져 있을 경우 편하게 사용 할 수 있다. 


- mask, effective

mask  :  가질 수 있는 최대 권한 > 다른 사용자가 어떤 권한을 가져도 mask 값을 넘을 수 없다. 

effective : mask 값을 넘지 않고 사용할 수 있는 권한


# rm -rf /test/file*

# echo 1111 > file1


# setfacl -m u:user01:7 file1 

# setfacl -m g:class1:7 file1 

# getfacl file1 

 

 # owner: root

# group: root

user::rw-

user:user01:rwx

group::r--

group:class1:rwx

mask::rwx

other::r--


 


# setfacl -m m::6 file1 

# getfacl file1 

 

 # file: file1

# owner: root

# group: root

user::rw-

user:user01:rwx                 #effective:rw-

group::r--

group:class1:rwx                #effective:rw-

mask::rw-

other::r--


 

> user01과 class1 그룹은 사실 rwx 권한을 부여 받았지만 mask값이 rw- 이기 때문에 실질적으로는 rw- 권한만 부여 받는다.


# mkdir dir1

# getfacl dir1

 

 # file: dir1

# owner: root

# group: root

user::rwx

group::r-x

other::r-x


 


# setfacl -m d:u::7,d:g::7,d:o::7 dir1

# getfacl dir1

 

 # file: dir1

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

default:user::rwx

default:group::rwx

default:other::rwx

 


디렉터리안에 파일이 생성될때 디렉터리의 default acl 정보를 상속 받는다. 

-> 생성 후 설정을 변경하면 다 변경되지 않는다. ( -R 옵션으로 해결 가능 )