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 以某种方式接管,通常应该被 acls 覆盖。如果我将 umask 更改为 002,我会得到所需的结果。

在 FreeBSD 上我使用 UFS2 文件系统,在 ArchLinux 上使用 ext4。

对此有什么想法吗?

答案1

正如您所看到的,组权限没有正确继承。

正如我所看到的,他们绝对是继承得当。您指定了group:rwx,并且 的输出getfacl已经很清楚地告诉您,您得到 group:rwx

在 FreeBSD 上,umask 以某种方式接管,通常应该被 acls 覆盖。

不正确。 FreeBSD 做了正确的事。 touch创建了一个具有权限的文件rw-rw-rw-,您当前的umask设置(022大概)修改rw-r--r--正是它应该的方式

第一个rw-成为userACE的部分,中间的r--成为maskACE的部分,最后一个r--成为otherACE的部分,因为这就是 TRUSIX 访问控制与设置旧式权限位的事物进行互操作的方式。用户权限是所有者用户的访问控制;其他权限是其他人的访问控制;和组权限是掩码访问控制

您的touch命令,用 修改umask,指示创建一个只有所有者用户可以写入的文件,而其他人(其他用户、所有者组、其他组和世界)只能读取,这就是您获得的 ACL 实现的目标。

如果您添加了一个可继承的 ACE,则表示u:nobody:rwx您将获得一个 ACL,nobody:r--以完全相同的方式有效地屏蔽它,因为您命令的是一个只有所有者用户才能写入的文件。

相关内容