正确设置Web服务器的/ home / user文件夹的权限

时间:2013-02-17 21:14:45

标签: security permissions centos public-html

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

因此,为了测试我服务器上的安全性,我写了一个PHP脚本,就像一个“导航器”。我可以去一个目录,打开文件等等。

问题是,我的工具允许我上升到“/”,我对此并不满意。 虽然Apache被称为“无人”,但它似乎可以覆盖整个服务器上的每个文件夹和文件。

我尝试像cPanel那样解决这个问题,但由于我没有cPanel,所以我不知道这是怎么做的。

基本上我有这个:

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

我想这样做“anotherAccount”无法访问“account”的文件。实际上我会喜欢它,所以“anotherAccount”甚至无法进入它自己的目录!

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

如何保护我的家庭文件夹?

1 个答案:

答案 0 :(得分:0)

您可以使用php.ini中的open_basedir指令将脚本限制为目录,请参阅documentation

如果您希望不同的站点具有不同的限制,则PHP实例必须具有不同的open_basedir值,可以在每个虚拟主机的基础上在apache中设置。有关详细信息,请参阅堆栈溢出中的this question

但是,请注意open_basedir不适用于使用system()和朋友执行的外部命令。如果你想要安全,那么最好继续以不同的用户或使用suPHP运行几个php-fpm实例。 this question的答案之一包含有关如何设置所有权和权限的说明,以便仅允许用户访问自己的文件。