shell_exec不尊重open_basedir

时间:2014-04-23 20:51:17

标签: php linux apache

我正在创建一个共享主机但不幸的是我需要允许用户使用shell_exec。问题是,使用该命令,他们几乎可以读取我服务器中的任何文件,包括其他网站的文件!如何使shell_exec服从我在vhosts文件中设置的open_basedir?

2 个答案:

答案 0 :(得分:0)

我相信没有简单的方法可以做到这一点。为了阻止客户端访问特定目录,您必须阻止正在运行的PHP运行用户。 (可能是apache或www-data)

您必须实现一个模块或一种方法来运行每个实例,并且用户可以根据您的特定路径进行操作。

答案 1 :(得分:0)

您可以限制用户可以访问的basedir和特定的root。 PHP需要/tmp dir用于会话,所以不要忘记这种规范性。这是示例的代码,您可以添加目录并允许它:

open_basedir = /home/users/some_user/public_html:/tmp

这是全局的PHP,但您可以在Apache用户托管环境中为每个用户设置以指定open_basedir

 php_admin_value open_basedir "/home/some_user:/usr/lib/php:/usr/php5/lib/php:/usr/local/lib/php:/usr/local/php5/lib/php:/tmp"

确保路径可用且检查正常。不要忘记添加/tmp