디렉터리 소유자에 대해 acl이 설정된 디렉터리에 대한 권한이 거부되는 이유는 무엇입니까(모든 표준 posix 권한을 제거한 후)?

디렉터리 소유자에 대해 acl이 설정된 디렉터리에 대한 권한이 거부되는 이유는 무엇입니까(모든 표준 posix 권한을 제거한 후)?

ls디렉터리 소유자 및 그룹에 대한 acl 권한이 있는 디렉터리에서 명령을 실행 하려고 합니다 (표준 posix 권한이 설정되지 않음). 이로 인해 getfacl사용자가 그렇게 할 수 있어야 하는데도 권한이 거부됩니다 .

이것이 내가 하는 일이다:

  1. 디렉터리를 만들고 그 안에 파일을 만듭니다.

mkdir /tmp/mydir && touch /tmp/mydir/myfile

  1. ls이 디렉터리에서 실행할 수 있는지 확인하세요 .
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwxr-x  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt 25 root    root    909312 Nov  1 11:57 ..
-rw-rw-r--  1 jgazula jgazula      0 Nov  1 11:57 myfile
  1. 이제 이 디렉터리에서 모든 표준 posix 권한을 제거해 보겠습니다.

chmod 000 /tmp/mydir

  1. 권한을 확인하세요.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---------  2 jgazula jgazula   4096 Nov  1 11:57 mydir
  1. 지금은 그렇게 할 수 없어야 합니다 ls.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied
  1. jgazula사용자 및 그룹에 대한 ACL 권한을 설정합니다.

sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/

  1. ACL 권한을 확인하세요.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::---
user:jgazula:rwx        #effective:rwx
group::---          #effective:---
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. lsacl 권한(유효 권한 포함)이 좋아 보이므로 디렉터리에서 실행할 수 있어야 합니까 ?
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied

하지만 나는 그 이유를 이해할 수도 없고 이해할 수도 없습니다.

  1. 흥미롭게도 표준 posix 권한을 확인할 때 그룹 권한 비트가 설정되어 있습니까? 그룹 권한만 업데이트되는 이유를 잘 모르겠습니다.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---rwx---+  2 jgazula jgazula   4096 Nov  1 12:13 mydir
  1. 소유자 및 그룹에 대한 acl 권한을 설정해 보겠습니다(예: 명령에서 소유자/그룹 생략).

sudo setfacl --mask -Rm u::rwx,g::rwx /tmp/mydir/

  1. acl 권한을 다시 확인하십시오.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::rwx
user:jgazula:rwx        #effective:rwx
group::rwx          #effective:rwx
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. 지금 실행할 수 있는지 확인하세요 ls.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwx---+  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt  25 root    root    909312 Nov  1 11:57 ..
-rwxrwxr--+  1 jgazula jgazula      0 Nov  1 11:57 myfile

6단계가 자체적으로 작동하지 않는 이유는 무엇입니까? 사용자와 그룹에 대해 명시적으로 acl 권한을 설정하고 있습니다. 왜 11단계를 수행해야 합니까?

답변1

을 실행하면 user 에 대한 항목이 생성 sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/됩니다 . 그러나 파일 소유자는 여전히 입니다 . ( 7단계의 출력에서 ​​이를 확인할 수 있습니다.)ACL_USERjgazulaACL_USER_OBJ---getfacl

에 따르면 man ACL접근 확인 알고리즘은 다음과 같다.

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_USER항목이 확인되지도 않습니다.

기본적으로 serverfault와 관련하여 동일한 문제가 있습니다.ACL: 파일 소유자에게 - - - 권한 부여. (그러나 대답은 ACL_USER반대 인 것 같습니다 ACL_USER_OBJ.)

관련 정보