ディレクトリ所有者に対して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

を実行すると、ユーザーのエントリが作成され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。)

おすすめ記事