PHP - 每个虚拟主机的open_basedir不同

Lop*_*poc 14 php apache virtualhost open-basedir

我遇到过这个问题,我有一个运行apache和php的服务器.我们有许多虚拟主机,但我们注意到潜在的恶意用户可以使用他的网络空间浏览其他用户的文件(通过简单的PHP脚本)甚至系统文件,这可能是由于php权限.一种避免它的方法是在php.ini中设置open_basedir var,这在单个主机系统中非常简单,但是在虚拟主机的情况下,每个主机都会有一个basebir.

我可以为每个用户/主机设置dis basedir吗?有没有办法让apache hereditate已经请求的php文件的php权限

EG /home/X_USER/index.php拥有所有者X_USER,当apache读取文件index.php时它会检查其路径和所有者,只是我正在寻找一个系统设置php basedir变量到该路径.

提前感谢Lopoc

Pek*_*ica 18

可以open_basedir使用php_admin_valueApache指令在每个目录的基础上进行设置.

手册中的示例:

<Directory /docroot>
  php_admin_value open_basedir /docroot 
</Directory>
Run Code Online (Sandbox Code Playgroud)

重新评论:是的,外部命令不受影响open_basedir- 当ls /使用PHP运行的用户帐户(通常命名www或类似)的权限进行调用时.据我所知,不可能扩展open_basedir到外部命令.

在这种情况下,我认为在正常的Apache/PHP设置中,您正在寻找的保护类型是不可能的.唯一可能接近的是在chroot监狱中运行Apache.我自己没有这样做,所以我不能说任何事情 - 你必须深入研究并且可能会特别提出一个问题.