簡単に言えば、グループ内のすべてのユーザーがそのディレクトリ内のすべてのファイルに対して読み取りおよび書き込み実行権限を持つディレクトリを持つファイルサーバーを作成しようとします。私の研究では、ACLはその仕事に適したツールですが、期待どおりに動作しないような問題に直面しました。
私は最新のUbuntu Server LTS 16.04.1を実行しており、問題のドライブに対してACLが有効になっていることを確認しました。
この例では、2人のユーザーがあり、alex
両方のusera
ユーザーがグループに属していますfileserver
。次のテストディレクトリを作成しました。
alex@tstsvr:/$ sudo mkdir -p /srv/fstest/test
alex@tstsvr:/$ sudo chown root:fileserver /srv/fstest/test
alex@tstsvr:/$ sudo chmod 770 /srv/fstest/test
そのディレクトリにalex
簡単なテストファイルを作成します。
alex@tstsvr:/$ cd /srv/fstest/test/
alex@tstsvr:/srv/fstest/test$ echo 123 > test.txt
$ ll
total 12
drwxrwx--- 2 root fileserver 4096 Dec 7 17:09 ./
drwxr-xr-x 4 root root 4096 Dec 7 16:46 ../
-rw-rw-r-- 1 alex alex 4 Dec 7 17:09 test.txt
ファイルがその人の所有であり、彼のグループに属していることがわかります。次に、彼はファイル権限を設定し、770
グループがfileserver
ファイルに対する権限を持つようにいくつかのACLを設定します。rwx
alex@tstsvr:/srv/fstest/test$ chmod 770 test.txt
alex@tstsvr:/srv/fstest/test$ setfacl -m g:fileserver:rwx test.txt
alex@tstsvr:/srv/fstest/test$ ll
total 12
drwxrwx--- 2 root fileserver 4096 Dec 7 17:09 ./
drwxr-xr-x 4 root root 4096 Dec 7 16:46 ../
-rwxrwx---+ 1 alex alex 4 Dec 7 17:09 test.txt*
今、すべてがうまくいくようですusera
。
usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw-
group:fileserver:rwx
mask::rwx
other::---
usera@tstsvr:/srv/fstest/test$ cat test.txt
123
ただし、ユーザーがalex
権限を700
...に変更した場合:
alex@tstsvr:/srv/fstest/test$ chmod 700 test.txt
ACLはこれらの権限をオーバーライドできないように見え、usera
ファイルを読み取ることはできません。
usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw- #effective:---
group:fileserver:rwx #effective:---
mask::---
other::---
usera@tstsvr:/srv/fstest/test$ cat test.txt
cat: test.txt: Permission denied
私が理解したのは、ファイルに名前付きグループACLエントリがあるため、そのファイル権限をオーバーライドしますが、そうではありません。
私が何か間違っているのか、私が誤解しているのですか、それとも実際には不可能なのですか?
ベストアンサー1
posix 権限は acl よりも優先されます。したがって、aclを提供した後にファイルをchmodすると、aclマスクが変更されます。以下は素晴らしい記事です。 https://serverfault.com/questions/352783/why-does-chmod1-on-the-group-affect-the-acl-mask