www-data 用户的 ACL 设置为 r--,Apache(PHP)仍然无法读取文件

www-data 用户的 ACL 设置为 r--,Apache(PHP)仍然无法读取文件

我的 PHP 脚本需要访问位于完全不同目录中的一些文件。

我已将 www-data 用户的 ACL 设置为具有读取权限,但 PHP file_get_contets() 函数返回错误“权限被拒绝”。

它仅当我为该目录设置 www-data 用户或组时才有效,但我不想这样做,除非 ACL 不影响在设置用户下运行的程序,并且设置所有权是执行此操作的唯一方法。

ACL 列表:

# owner: user1
# group: group1
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:www-data:rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---

提前致谢

答案1

您的输出显示您已为目录设置了“默认”(可继承)ACL,但未设置“正常”(有效)ACL。换句话说,前缀为 的default:条目仅用于复制到新创建的文件,但它们不要立即应用于该目录本身。

因此唯一有效的权限是这些,并且唯一与用户“www-data”和“user2”匹配的 ACE 是根本other::---不授予任何权限的通用条目:

# 所有者:user1
# 组:组 1
# 标志:-s-
用户::rwx
组::rwx
其他:: - -

因为“www-data”与任何授予该目录 +x(遍历)权限的 ACE 都不匹配,所以无论它们自己的权限是什么,都不允许访问里面的任何文件。

为了修复此问题,请再次设置 ACL,这次不添加“默认”标志:

setfacl -m "u:www-data:rwx" the_directory

相关内容