3

drwxrwxr-x+グループ書き込み可能ビットがないのにディレクトリが表示されるのはなぜですか?

rwx次のように、ディレクトリに対する追加のユーザー (john) パーミッションを 1 つ付与しましょう。

$ mkdir logfiles
$ setfacl -m user:john:rwx logfiles
$ getfacl -ce logfiles
user::rwx
user:john:rwx                   #effective:rwx
group::r-x                      #effective:r-x
mask::rwx
other::r-x

それがまさに私が望んでいる方法であり、john はディレクトリ所有者と同等のアクセス権を持つようになりました。でも、

$ ls -ld logfiles
drwxrwxr-x+ 2 bob users 4096 Mar  6 22:38 logfiles

$ find -perm +020 -ls
  8197    4 drwxrwxr-x   2 bob      users        4096 Mar  6 22:38 ./logfiles

どのグループにも書き込み権限はありませんが、ls の出力と find の一致する結果は、そうでないことを示唆しています。これは、lstat(2) システム コールの st_mode フィールドから直接取得されます。なぜS_IWGRPビットが設定されているのですか?

4

2 に答える 2

2

特定のファイルまたはディレクトリに対して POSIX ACL がアクティブ化されると。グループ クラスのパーミッション モードはグループ パーミッションではなくなりました。実際にはマスク ACL エントリです ( とは関係ありませんumask)。ファイルに POSIX ACL 拡張子が付けられているため ( の+接尾辞でわかるようにls -l)、rwxls、stat、および find で示されるものは、実際にはグループ クラスのアクセス許可モードではなくなりました。グループ クラス許可モードを変更してchmodも、マスクのみが変更され、実際のグループ クラス許可モードは変更されません。つまり、グループ クラスのアクセス許可モードを変更するには、 を使用するしかありませんsetfacl

マスク ACL エントリは、グループ クラスに「割り当てられた」すべての ACL エントリに対して可能な最大の権限のように見えます。これには、名前付きユーザー、名前付きグループ、および所有グループが含まれます。所有ユーザーとその他のクラスは含まれません。これにより、名前付きユーザー、名前付きグループ、または所有グループに割り当てられた権限を制限できます。最大限の柔軟性を得るには、マスクを に設定してからrwx、名前付きユーザー、名前付きグループ、および所有グループのアクセス許可を自由に設定してください。これはすべてcd、 、lsおよびその他のものに対して機能します。ただし、これはls、 、またはstat.. などを使用するrwxと、グループ クラスに対してすべて表示されることを意味しますが、それは正しくありません。

なぜこのマスクがここに?それはどのような目的を解決しますか?マスクは、POSIX ACL を理解しないプログラムとの後方互換性のためにここにあったようです。プログラムが POSIX ACL を理解せずrwx、グループ クラス (実際には実際にはマスクである) を認識した場合、ディレクトリ/ファイルへのアクセスに成功するかどうかはどうなりますか? (この質問に対する答えはわかりません)。これは本当に奇妙な癖であり、おそらく削除する必要があると思います。しかし、これが POSIX ACL の仕組みです。

于 2016-08-05T10:27:35.400 に答える
1

ここにあなたの答えがあるかもしれません-ACL伝播:

http://users.suse.com/~agruen/acl/linux-acls/online/

一部のファイルシステムでは、マウント オプションとして使用できます。あなたが持っているファイルシステムがわからないので、これは悪い答えかもしれません。

于 2013-03-07T00:20:21.553 に答える