我用php在chroot /srv/http中创建了一个nginx服务器。这两个服务都使用http用户,并且工作正常。当我试图运行exec命令(如
echo shell_exec('/usr/bin/ls');
网页或错误中根本没有输出。我也试过
error_log(shell_exec('/usr/bin/ls');
但还是什么都没有。
我试过或知道的事情:
据我所知,除了php的shell命令之外,所有东西都在chroot中工作。有谁知道我哪里出了问题,怎么解决?
发布于 2013-07-13 23:29:16
这听起来可能很愚蠢,但您必须复制/bin/sh
(而不是/bin/bash
!)给你chroot
。
例如,请参见以下问题:How do I change the shell for php's exec()
发布于 2013-06-09 01:41:36
如果您将chroot
转到某个目录,则此目录将成为所有PHP脚本的根目录。这意味着,如果您从PHP内部执行/usr/bin/ls
,它将尝试执行/srv/http/usr/bin/ls
。
您可以将可执行文件复制到该目录,但要注意安全性问题。如果将关键的系统可执行文件复制到有色度的目录中,则基本上绕过了chroot
的积极影响。
发布于 2013-07-13 23:45:01
我没有输出
echo shell_exec('/usr/bin/ls');
都不是。大概是因为ls
不是一个文件,而是一个内置命令。跑步:
echo shell_exec('ls');
产出:
css演示favicon.ico图像js path.php robots.txt routing.php测试
它是站点根目录中的文件列表。
https://stackoverflow.com/questions/17006136
复制相似问题