为 -rw-r--r--+ 正确设置 ACL

为 -rw-r--r--+ 正确设置 ACL

我已经能够为新文件设置默认 ACL 权限,如下所示:

sudo setfacl -Rdm u:usernamehere:rwx /var/www/path/to/files

这似乎为所有新文件授予了以下权限:

-rw-r-----+

我希望新文件获得以下权限:

-rw-r--r--+

如果有什么区别的话,我正在运行 CentOS。

非常感谢对此的任何帮助。

谢谢!

答案1

首先,请注意,具有指定用户或组的 ACL 条目的文件 ACL 也具有一个ACL掩码限制这些 ACL 条目和组所有者条目授予的权限的条目。掩码条目显示为组权限ls和其他仅查看传统权限位的实用程序。

因此,如果您ls显示-rw-r--r--+,ACL 掩码为r--,这意味着权限 ACLu:usernamehere:rwx将充当u:usernamehere:r--。那可能不是你想要的。另一方面,请注意u:usernamehere:rwx与 不同u::rwx,即使对于 拥有的文件也是如此usernamehere。第一个是命名条目,受掩码限制,而第二个是文件所有者的条目不是有限的。

掩码的想法是,运行相当于的工具chmod go-rwx仍然可以使文件除所有者之外的任何人都无法访问。您可以使用 删除掩码条目setfacl -x m:: filename,但它仅在没有指定用户或组条目时才有效。

在任何情况下,您都可以在同一命令上添加多个默认条目。这将设置默认条目,以便文件所有者获得权限rwx,掩码设置为r--,“其他”的权限设置为r--

$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path

您可能还想为组所有者显式设置默认 ACL ( g::),因为该条目在任何情况下都会出现(其值可能取自权限位)。例如,在这里,组所有者的条目并不完全有效,因为掩码对其进行了限制:

default:user::rwx
default:group::r-x              #effective:r--
default:mask::r--
default:other::r--

在目录中创建的文件显示为lsas -rw-r--r--+


话又说回来,如果您只是希望指定用户获得您所说的权限,您可以省略掩码字段,系统setfacl会根据您用于实际 ACL 条目的权限为您设置它:

setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path

在目录中创建的文件现在显示在lsas-rw-rw-r--+和 in 中getfacl

user::rw-
user:usernamehere:rwx           #effective:rw-
group::r-x                      #effective:r--
mask::rw-
other::r--

x自从我使用 创建文件以来,掩码丢失了touch,并且它使用了权限0666,屏蔽了这些x位。

相关内容