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