我目前正在建立自己的运行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 /列为空!
如何保护我的家庭文件夹?
答案 0 :(得分:0)
您可以使用php.ini中的open_basedir
指令将脚本限制为目录,请参阅documentation。
如果您希望不同的站点具有不同的限制,则PHP实例必须具有不同的open_basedir
值,可以在每个虚拟主机的基础上在apache中设置。有关详细信息,请参阅堆栈溢出中的this question。
但是,请注意open_basedir
不适用于使用system()
和朋友执行的外部命令。如果你想要安全,那么最好继续以不同的用户或使用suPHP运行几个php-fpm实例。 this question的答案之一包含有关如何设置所有权和权限的说明,以便仅允许用户访问自己的文件。