在我的 RHEL 7.7 系统上,我试图允许用户 foo 读取和执行(不写入) /var/log/ 目录下的所有内容,以包含文件、子目录以及这些子目录中的文件。我尝试过各种setfacl
命令,但似乎没有什么可以递归地工作。它允许 foo 使用 rX 权限访问 /var/log/ ,但不能访问其下的任何子目录或文件。
我尝试了以下变体,但 foo 访问 /var/log/ 下面的子目录没有成功
setfacl -Rm d:u:foo:rX,u:foo:rX /var/log
setfacl -Rm u:foo:rX,d:u:foo:rX /var/log
setfacl -R -m u:foo:rX /var/log
setfacl -m u:foo:rX /var/log
在这一点上我很迷失,我宁愿使用setfacl
overchmod
以确保未来的文件夹和文件(以及现有的)允许 foo 正确访问。
更新:系统有selinux处于强制模式。我设置为宽容,通过验证getenforce
,然后运行我的setfacl
命令,使用用户 foo 进行测试,但没有成功。将系统设置回强制模式。
答案1
这应该是评论,而不是答案,但我没有足够的观点来评论。这可能是由于 SELinux 造成的。检查状态,getenforce
或者sestatus
。如果状态为强制执行,您可以尝试setenforce Permissive
然后重复这些命令,看看是否有任何区别。但我不建议禁用 SELinux。如果更改状态会产生影响,则您应该更改 /var/log SE 标签。