我已经能够为新文件设置默认 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--
在目录中创建的文件显示为ls
as -rw-r--r--+
。
话又说回来,如果您只是希望指定用户获得您所说的权限,您可以省略掩码字段,系统setfacl
会根据您用于实际 ACL 条目的权限为您设置它:
setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path
在目录中创建的文件现在显示在ls
as-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
位。