리눅스에서 ACL 이란 특정 사용자에게 특정 권한을 부여하는 것 을 말한다
chmod 명령어로는 user group other 이란 한정된 영역에 권한을 부여할 수 있다
만약 /etc/passwd 란 파일의 권한이 rwx --- --- 이면 user 영역에 소속된 사람만 /etc/passwd 파일을 사용할 수 있다. 여기서 ACL 을 사용하게 되면 group , other 그룹에 권한을 건드리지 않고 특정 사용자나 그룹만 /etc/passwd 파일을 사용할 수 있게 설정할 수 있다.
ACL ( Access Control List)
1. ACL 확인
#>getfacl [path]
-m ACL 설정
-x ACL 삭제
-b 모든 ACL 삭제
2. ACL 설정
#>setfacl -m [acl] [path]
--- ---- -------
① ② ③
①. -m acl 설정 옵션
②. [acl]
(구분자 [:]를 기준으로 명령어를 사용해야 한다.)
u:[user_name]:[perm] 특정 유저 권한 설정
ex) u:testuser:rwx (rwx 대신 숫자로도 사용 가능 1,2,3,4,5,6,7)
g:[group_name]:[perm] 특정 그룹 권한 설정
ex) g:testgroup:rwx
m:[mask 값]::[perm] 권한 설정
③. acl 설정 파일의 경로
acl 설정이 된 파일이나 디렉터리는
rwx --- --- + 권한 옆에 [+] 가 붙게 된다

acltest라는 디렉터리 안에 test라는 파일을 만들고 권한을 700을 주었다 이 파일은 파일의 소유자인 root만 사용할 수 있다.

아무 내용도 없긴 하지만 su 명령어로 ming이라는 유저로 접속해 /acltest/test 파일을 읽어보려고 하지만 역시나 rwx --- --- 권한인 /acltest/test 파일은 other인 ming 이 읽을 수 없다 우린 이 파일을 ACL 설정을 해주어 ming 유저에게만 /acltest/test 파일을 읽을 수 있는 권한을 부여해 줄 것이다

#< setfacl -m u:ming:rw /acltest/test
-------- --- -- ------ --- --------------
① ② ③ ④ ⑤ ⑥
①. [setfacl] 명령어
②. [-m] 옵션 (ACL 설정)
③. [u] user의 약자 group 설정은 [g]
④. [ming] user 지정
⑤. [rw] 권한 지정 (r, w, x)
⑥. [/acltest/test] ACL 설정 파일 지정
ACL 을 설정하면 권한 옆에 빨간색 동그라미 친 것처럼 [+] 가 붙게 된다 이제 ming 계정으로 저 파일을 확인해보자

test라는 파일에 아무 내용이 없어서 아무것도 출력되지 않지만 아무런 문구가 나오지 않는다는 것은 명령을 성공적으로 수행했다는 것이다.
ACL 설정 확인
#> getfacl [경로]

getfacl 명령어로 설정한 acl 을 확인할 수 있다 user:ming:rw-라는 acl 이 설정된 것을 확인할 수 있다
여기서 잠깐 밑에 mask:rw- 라는게 보인데 이 mask는 뭘까?
acl에서 mask는 파일의 소유자를 제외한 group other 이 가질 수 있는 최대 권한을 말한다 만약

이런 식으로 ming 유저의 권한을 rwx로 주어도

mask 값이 rw-이니까 acl을 설정해둔 유저를 포함한 group 과 other 은 rwx 권한을 부여받아도 mask 값인 rw- 이상의 권한을 사용하지 못한다.
mask 설정은

이런 식으로 [ACL] 설정값에 m::[권한] 을 넣어주면 된다.
ACL 삭제
특정 ACL 삭제
#>setfacl -x [acl] [path]

특정 acl 을 삭제하려면 옵션 -x를 넣으면 된다 마지막 ming: 뒤에 권한을 넣으면 해당 권한만 삭제할 수 있다.
모든 ACL 삭제
#>setfacl -b [path]

옵션 -b를 사용하면 해당 파일의 모든 ACL을 삭제할 수 있다.