共享主机:如何防止用户查看他人的文件,但仍然能让 Apache/PHP 写入他们的文件

共享主机:如何防止用户查看他人的文件,但仍然能让 Apache/PHP 写入他们的文件

我读过了我的网站文件/文件夹在 Linux 网络服务器上应该具有什么权限?以下是相关问题。假设:

  • /var/www/bobweb/bob:bob

  • /var/www/eveweb/eve:eve

每个站点都有一个 Apache VirtualHost,链接到bobweb.comeveweb.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,整个问题空间就会改变。

相关内容