簡単に言えば、グループ内のすべてのユーザーがそのディレクトリ内のすべてのファイルに対して読み取りおよび書き込み実行権限を持つディレクトリを持つファイルサーバーを作成しようとします。私の研究では、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
答え2
ファイルにacl権限を適用した後、最初の11文字が何を意味するのかを説明します。
-rwxrwx---+ 1 alex alex 4 Dec 7 17:09 test.txt*
10文字の許可文字列の末尾にある+は、ファイルに関連付けられたACL設定があることを示します。ユーザー、グループ、およびその他の「rwx」フラグを次のように解釈します。
- ユーザー:標準ユーザーファイル設定と同じユーザーACL設定を表示します。
- グループ:グループ所有者設定の代わりに現在のACLマスク設定を表示します。
- その他: 標準のその他のファイル設定と同じ追加の ACL 設定を表示します。アクセス禁止。
重要
ACLを使用したファイルのグループ権限の変更chmodグループ所有者権限は変更されませんが、ACL マスクは変更されます。
所有者グループの権限を変更するには、次を使用します。setfacl -mg::perms ファイル
次のコマンドを使用して、グループ所有者の権限を変更できます。
chmod 700 test.txt
- 7(rwx)ファイル所有者権限の変更
- 0 (---) ACL マスクを変更します。
- 0 (---) その他権限の変更
以下のコマンドに従って上記のコマンドを変更してください。
setfacl -m g::--- text.txt
ACL権限を申請した後setfacl -mg::perms ファイル所有者グループの権限を変更する唯一の方法です。
名前付きユーザー、名前付きグループ、および所有者グループ権限コントローラACLマスク
マスク権限を0(---)に変更したため、name-group(fileserver)の有効権限は0(---)です。