FreeBSDはACLを尊重しません

FreeBSDはACLを尊重しません

FreeBSD 13.0でフォルダのデフォルトグループ権限を設定しようとしています。

$mkdir test
$setfacl -d -m u::rwx,g::rwx,o::rx,mask::rwx test
$getfacl -d test
# file: test
# owner: john
# group: wheel
user::rwx
group::rwx
mask::rwx
other::r-x
$cd test
$touch file

$ls -l file
-rw-r--r--+ 1 john  wheel     0B Jul  9 19:32 file

$getfacl file
# file: file
# owner: john
# group: wheel
user::rw-
group::rwx              # effective: r--
mask::r--
other::r--

ご覧のとおり、グループ権限が正しく継承されていません。ユーザーとグループのxフラグは気にしません。これはセキュリティメカニズムです。ただし、グループには書き込み権限が必要ですが、そうではありません。 "mkdir"コマンドで作成されたフォルダでも同じ動作が見られます。

ArchLinuxでは、同じコマンドセットが正常に実行されます。 FreeBSDでは、umaskは何らかの方法で引き継がれ、通常aclによってオーバーライドされなければなりません。 umaskを002に変更すると、目的の結果が得られます。

FreeBSD では UFS2 ファイルシステムを使用し、ArchLinux では ext4 を使用します。

これについて考えていますか?

ベストアンサー1

ご覧のとおり、グループ権限が正しく継承されていません。

私が見ると、彼らは絶対にそうです。はい適切な継承。を指定しgroup:rwx、出力は次getfaclのようになります。得る group:rwx

FreeBSDでは、umaskは何らかの方法で引き継がれ、通常はaclによってオーバーライドされるべきです。

間違っています。 FreeBSDは正しいことをしました。 touch権限のあるファイルが作成され、rw-rw-rw-現在umaskの設定が(022おそらく)rw-r--r--次のように変更されます。まさにそうしなければなりません。

最初の部分がACErw-になりuser、中間部分がACEr--になりmask、最後の部分がACEr--になります。otherこれは、TRUSIX アクセス制御がレガシー特権ビットの設定と相互運用される方法です。。ユーザー権限は、所有者ユーザーのアクセス制御です。グループ権限は、マスクされたアクセス制御です。

touch変更により、あなたのコマンドumaskは所有者ユーザーのみを書き込むことができ、他のユーザー(他のユーザー、所有者グループ、他のグループ、および世界中)は読み取り専用のファイルを作成するように指示します。これはあなたが得たACLが達成するものです。

継承可能なACEを追加すると、所有者ユーザーのみが書き込み可能なファイルにコマンドを発行するのと同じ方法で効果的にブロックするu:nobody:rwxACLが得られます。nobody:r--

おすすめ記事