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

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

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.)

관련 정보