用户想让 PHP 在他的 /home/ 目录中写入文件,他建议我执行他的用户名在usermod -a -G www-data username
哪里username
。我不确定这是否是一个安全问题。
解决这个问题的最佳方法是什么?
答案1
建议的命令将用户添加到www-data
组。这可能会给他带来意想不到的额外权限,特别是他将能够访问任何仅限于该www-data
组的文件。这可能比你预期的要多得多。
例如,假设两个用户提出此请求并被添加到组中,并且每个用户都向组www-data
开放。然后每个人都可以读取和写入对方的目录。~/www-shared
www-data
www-shared
访问控制列表看起来更适合上述目的。这要求您的操作系统和文件系统支持 ACL。在 Linux 上,请确保文件系统已使用该选项挂载acl
。然后用户可以运行setfacl -m user:www-data:rwx ~/www-shared
以与用户共享目录www-data
。
不过,这个问题听起来像是许多运行 Web 服务器的人以前遇到过的问题。因此,可能存在一个涉及 Apache 工具箱的更好的解决方案。
答案2
这不是一个好主意,因为用户 www-data 将位于该用户的组中。因此,Web 服务器可以操作该用户的所有文件。
此外,系统上的任何其他用户都可以通过简单的 php 脚本读取和写入给定用户的文件。
通常,授予 Web 服务器超出需要的写入/读取权限并不是一个好主意。因此,您可能希望仅在需要写入权限的目录(甚至文件)中扩大权限。例如,这可能是一个上传目录。
喜欢...
chgrp www-data /home/foobar/public_html/wordpress/uploads
chmod -R g+rwX /home/foobar/public_html/wordpress/uploads