我的 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