我读过了我的网站文件/文件夹在 Linux 网络服务器上应该具有什么权限?以下是相关问题。假设:
/var/www/bobweb/
归bob:bob
/var/www/eveweb/
归eve:eve
每个站点都有一个 Apache VirtualHost,链接到bobweb.com和eveweb.com。
每个网站都需要由 Apache 写入(两个网站都有一个图像上传器),因此我经常阅读:
“就这么做
chgrp -R www-data /var/www/bobweb/
,对 Eve 来说也是一样,就这样!”
得出:
drwxrwx--- 3 bob www-data 4096 Jan 9 17:45 bobweb
drwxrwx--- 5 eve www-data 4096 Feb 26 2019 eveweb
这确实阻止了 Bob 从 shell/SSH 访问 Eve 的文件,反之亦然。
但看来 Eve 可以编写一个 PHP 脚本(由 运行www-data
)来读取(甚至修改)/var/www/bobweb/wp-config.php
(从而窃取 Bob 的数据库密码!)。
问题:如何修改用户+组所有权和权限以防止 Bob 读取 Eve 的文件和反之亦然,但仍然允许 Apache+PHP 在这些网站上写入数据?
(典型的共享主机情况)
答案1
仅使用文件权限无法完全实现这一点 - 您应该查看正在运行的应用程序以创建 jail。对于 PHP,您可以使用“open_basedir“基于每个虚拟主机。
您还需要在您的 FTP 服务器中有类似的东西(您还没有告知您正在使用哪个服务器,但是许多/大多数服务器都有适当的指令)。
当然如果您允许 cgis,整个问题空间就会改变。