0

我目前正在设置我自己的运行 CentOs 6 的 Linux 服务器。我已经知道基本命令等,但我对 apache/php 安全性没有太多经验,尽管我对 PHP 本身有很多经验。

因此,为了测试我服务器上的安全性,我编写了一个 PHP 脚本,其作用类似于“导航器”。我可以上一个目录,打开文件等等。

问题是,我的工具允许我上到“/”,我对此不太满意。尽管 Apache 以“无人”身份运行,但它似乎可以访问整个服务器上的每个文件夹和文件。

我试图像 cPanel 那样解决这个问题,但由于我没有 cPanel,所以我不完全知道这是如何完成的。

基本上我有这个:

/home/account/public_html
/home/anotherAccount/public_html

我想让“另一个帐户”无法访问“帐户”的文件。实际上我会喜欢它,所以“anotherAccount”甚至不能离开它自己的目录!

是的,我知道你在想:安装 suPHP/fastcgi/suExec,但我不能这样做,因为它们正在吃资源。我知道不安装其中任何一个都是可能的!我将我的脚本上传到了一些专业但不太知名的虚拟主机,我能够进入 / 使用它,但不能进入主目录,除了我自己的。/home/ 列为空!

如何保护我的主文件夹?

4

1 回答 1

0

您可以使用open_basedirphp.ini 中的指令将脚本限制在一个目录中,请参阅文档

如果您希望不同的站点具有不同的限制,PHP 实例必须具有不同的值open_basedir,可以在 apache 中基于每个虚拟主机进行设置。有关更多详细信息,请参阅堆栈溢出中的此问题

但是,请注意,open_basedir这不适用于使用system()和朋友执行的外部命令。如果您想避免这种情况,最好继续以不同用户身份运行多个 php-fpm 实例或使用 suPHP。此问题的答案之一包含有关如何设置所有权和权限以仅允许用户访问自己的文件的说明。

于 2013-02-20T22:59:16.677 回答