我最近买了一个VPS,从中学到了很多东西。 我pipe理创build一个FTP用户,将其设置为我的网站的文档根的所有者,将其添加到WWW用户组,将该组设置为文档根组,并给予文件0775(0664)权限。
我的问题是,如果www-data可以访问和修改文档根目录中的文件,那么来自其他站点的脚本也不能修改这些文件(这些文件现在使用.htaccess保护)。
注意:我希望www数据具有写权限,因为PHP脚本应该能够修改这些文件。
如何解决这个问题?
为了解决这个问题,你必须用自己的凭证运行每个站点实例,而不是使用www-data 。
如果使用apache ,则可以使用apache-mpm-itk及其AssignUserID参数为每个不同的站点/虚拟主机分配一个特定的用户/组。 有了这个方法, apache , php , cgi ,ecc都将使用分配的凭证运行。
另一个特定于PHP的方法是suPHP ,它基本上使用特定的用户/组凭据来运行你的php脚本。
我认为最好不要让Apache用户或组写入所有的文档根目录。 使用apache-mpm-itk / suPHP / mpm-peruser,或许你应该检测Apache真正需要写入的文件和目录(每个站点),并给这些文件/目录的组写权限。