FreeBSDはなぜwマスクを失いましたが、Debianはそれを維持しましたか?

FreeBSDはなぜwマスクを失いましたが、Debianはそれを維持しましたか?

FreeBSD ACLとLinux ACLの動作の違いを理解しようとしています。特に基本 ACL の継承メカニズムです。

Debian 9.6 と FreeBSD 12 では、次のコマンドを使用しました。

$ cat test_acl.sh
#!/bin/sh

set -xe

mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage

touch outside
cd storage
touch inside
cd ..

ls -ld outside storage storage/inside

getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside

umask

Debian 9.6 では、次のような出力を取得します。

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa aaa    0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa    0 Dec 28 11:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx          #effective:rw-
mask::rw-
other::---

+ umask
0022

ファイルoutsideinsideファイルの権限は異なります。特に、ファイルにはこのユーザーのデフォルト値がoutsideあり、ファイルには私がディレクトリに割り当てたデフォルトのACLに準拠しています。-rw-r--r--inside-rw-rw----storage

FreeBSD 12で同じスクリプトの出力:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa  aaa    0 Dec 28 03:16 outside
drwxr-xr-x  2 aaa  aaa  512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa  aaa    0 Dec 28 03:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx      # effective: r--
mask::r--
other::---

+ umask
0022

(Debianはwhereを使わなくてもデフォルトのgetfaclACLを表示します-dが、FreeBSDはそうではありませんが、実際のACLは変わらないと思いますstorage。)

ここでoutsideinsideファイルには異なる権限がありますが、insideファイルにはDebianバージョンのグループ書き込み権限がありません。おそらくDebianのマスクが維持されるからです。wFreeBSDのマスクが失われましたw

wFreeBSDはなぜマスクを失いましたが、Debianはマスクを維持しましたか?

答え1

簡単に言えば、彼らはumaskを別々に使用すると仮定します。

0022は正確にグループ-その他が設定されていないWです。 umask を変更して書き込み禁止を無効にし、結果を確認できます。

Solarisとも呼ばれるSunOSのマニュアル(および説明)で引用した内容は非常に関連性があるようです。 "...ディレクトリにデフォルトのACLエントリが含まれている場合、umask(1)は適用されません。..."

関連情報