file permission과 acl 관계

hanilsoo의 이미지

안녕하세요?
우현히 다음과 같은 현상이 발생하였는데 검색해봐도 잘 나오지 않아서 질문 드립니다.

사용자 id : test1

1. a 라는 파일의 user permission : 0
test1@test:~/example/test$ ls -l
합계 4
----rw-r-- 1 test1 test 5 9월 14 15:31 a

2. test1의 사용자에게 acl read,write를 부여
test1@test:~/example/test$ setfacl -m u:test1:rwx a
test1@test:~/example/test$ ls -l
합계 4
----rwxr--+ 1 test1 test 5 9월 14 15:31 a

3. test1 사용자가 a를 access 하지 못함
test1@test:~/example/test$ cp a b
cp: 읽기를 위해 `a'을(를) 열 수 없음: 허가 거부

4. 질문
- 파일의 read 퍼미션이 없는 상태에서 acl read를 추가해도
파일 read가 안되는 이유?

모두들 좋은 하루 보내세요

academic의 이미지

상위 폴더에 접근 권한이 있는지 확인해보세요.

getfacl ~/example/test

상위 폴더에 권한이 없으면 파일에 권한이 있어도 안됩니다.

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

hanilsoo의 이미지

상위 폴더에는 접근 권한이 있습니다.
누군가 파일 퍼미션을 건드렸는데 특이한 사항이라서
질문하기 위해 시험한 내용을 적은 것 입니다.

요점은
1) 파일 퍼미션에 read 옵션이 없는데, acl로 read 옵션을 추가함
2) 이때 파일 read가 안됨 --> 파일 퍼미션과 acl 옵션 간의 우선순위??
3) 현재 시험한 내용은 파일 퍼미션에 read 옵션이 없다면 acl에서 read 옵션을 주어도 읽지 못함..
이것이 맞는지? 어디 관련 자료가 명시적으로 존재하는지?
이것이 질문의 요지 입니다.

리눅스나 유닉스로 프로그램한지가 몇십년되었더니..^_^

academic의 이미지

잘 살펴보니 좀 특이한 케이스네요.

실제로 test1이 owner인데, owner 권한은 주지 않고 user 권한만 줬네요.

두 개의 권한이 충돌하는군요.

ACL man 페이지의 ACCESS CHECK ALGORITHM 항목을 보면

프로세스의 EUID가 파일의 owner와 동일하다면 제일 먼저 owner 권한을 체크하는 듯 합니다.
owner 권한이 없으면 ACL 엔트리의 다른 권한을 체크해보지 않고 바로 거부를 해버리니, setfacl 로 지정해준 권한은 아무 필요가 없게 되는거죠.

A process may request read, write, or execute/search access to a file object protected by an ACL. The access check algorithm determines whether access to the object will be granted.

1. If the effective user ID of the process matches the user ID of the file object owner,

then if the ACL_USER_OBJ entry contains the requested permissions, access is granted,

else access is denied.

2. else if the effective user ID of the process matches the qualifier of any entry of type ACL_USER,
then

if the matching ACL_USER entry and the ACL_MASK entry contain the requested permissions,
access is granted,

else access is denied.

acl에 대해서 어느 정도 알고 있다고 생각했었는데... 덕분에 새로운 걸 배웠네요. 감사합니다.

p.s. 아직도 파일 권한에 대해서 잘 모르고 있었다니... 어디 가서 리눅스 안다는 얘길 하면 안되겠네요. T.T

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

academic의 이미지

덕분에 제 오랜 의문도 풀렸습니다. 거듭 감사합니다.

https://kldp.org/node/138441

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

hanilsoo의 이미지

감사 합니다.
저런 명시적인 글이 있으니 정돈이 되네요