ls
ディレクトリ所有者とグループに対するacl権限を持つディレクトリでコマンドを実行しようとしています(標準posix権限は設定されていません)。これにより、getfacl
ユーザーがそうすることができなければなりませんが、権限が拒否されます。
これが私がすることです:
- ディレクトリを作成し、その中にファイルを作成します。
mkdir /tmp/mydir && touch /tmp/mydir/myfile
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
- それでは、このディレクトリからすべての標準のposix権限を削除してみましょう。
chmod 000 /tmp/mydir
- 権限を確認してください。
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d--------- 2 jgazula jgazula 4096 Nov 1 11:57 mydir
- 今はそうすることはできません
ls
。
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied
jgazula
ユーザーとグループのACL権限を設定します。
sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/
- 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::---
ls
acl権限(有効な権限を含む)が良く見えるので、ディレクトリで実行できる必要がありますか?
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied
しかし、私はその理由を理解することも、理解することもできません。
- 興味深いことに、標準のposix権限をチェックするときにグループ権限ビットが設定されていますか?グループ権限のみが更新される理由がわかりません。
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---rwx---+ 2 jgazula jgazula 4096 Nov 1 12:13 mydir
- 所有者とグループに対するacl権限を設定しましょう(たとえば、コマンドから所有者/グループを省略)。
sudo setfacl --mask -Rm u::rwx,g::rwx /tmp/mydir/
- 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::---
- 今実行できることを確認してください
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_USER
jgazula
ACL_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
。)