我不确定这个问题应该在这里还是在所以。如果需要的话我可以把它移到那里。
在任何合适的 Apache 配置中,Apache 将以自己的 ID 运行;www-data
例如。并且此 ID 将不是有权限列出并增删改查与其他操作系统帐户一样保存文件。这是安全设计使然。
我希望能够以某种方式让 Apache 以另一个 OS 帐户的身份列出或 CRUD 文件。例如,列出帐户主目录中的文件或在帐户主目录中创建新的文本文件。
我知道一个解决方案是使用文件/文件夹组权限,但我不能这样做,因为我无法处理文件/文件夹所有权或权限。
我调查了执行指令,苏普, 和php-fpm但它们都不起作用,因为它们将以脚本所有者的身份运行脚本。就我而言,我以任意数量的操作系统帐户运行命令,例如cp
或mv
。我可以使用它们的唯一方法是为每个操作系统帐户编写一个脚本。或者让脚本由所有者拥有,root
但这听起来不安全。
所以我开始思考sudo
。我可以授予www-data
sudo
与操作系统帐户相同的权限。
文件中条目的示例sudoers
:
www-data ALL = (osAccount1) NOPASSWD: /bin/ls, /bin/mv
www-data ALL = (osAccount2) NOPASSWD: /bin/ls, /bin/mv
但这确实充满了风险。我无法准确指出风险是如何或为什么会这样——只是感觉很糟糕。
有什么办法可以做我想做的事吗?
答案1
我知道一个解决方案是使用文件/文件夹组权限,但我不能这样做,因为我无法处理文件/文件夹所有权或权限。
传统的用户-组-其他文件权限 ( chmod
chown
chgrp
) 使这变得困难,但您可以使用访问控制列表来设置除这些权限之外的更细粒度的权限。该方法因文件系统和版本而异,但可以考虑使用 acl 支持(重新)安装文件系统并使用setfacl
或setrichacl
为现有 UGO 权限设置额外的 ACL,这将授予您的 Web 服务器所需的访问权限。