Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-exec sudo命令不返回任何内容_Php_Ubuntu_Exec - Fatal编程技术网

PHP-exec sudo命令不返回任何内容

PHP-exec sudo命令不返回任何内容,php,ubuntu,exec,Php,Ubuntu,Exec,关于这个话题有很多问题,但我的情况很奇怪 我正在用php打印exec(“sudo-u root whoami”)。但它什么也不返回 我通过sudo visudo添加了%www-data-ALL=(ALL:ALL)ALL,但对发生的事情没有运气,没有错误,只是没有打印任何内容 有什么建议吗 提前感谢您的Web服务器将如何输入sudo的密码 您的配置允许Web服务器用户在服务器上运行所有命令。但这需要用户输入密码。还有网络服务器 不能以交互方式这样做 甚至连一个单词都没有 因此如果你想做你想做的事情

关于这个话题有很多问题,但我的情况很奇怪

我正在用php打印
exec(“sudo-u root whoami”)
。但它什么也不返回

我通过
sudo visudo
添加了
%www-data-ALL=(ALL:ALL)ALL
,但对发生的事情没有运气,没有错误,只是没有打印任何内容

有什么建议吗


提前感谢

您的Web服务器将如何输入
sudo
的密码

您的配置允许Web服务器用户在服务器上运行所有命令。但这需要用户输入密码。还有网络服务器

  • 不能以交互方式这样做
  • 甚至连一个单词都没有
  • 因此如果你想做你想做的事情(让运行PHP根目录的进程访问机器是一个非常糟糕的主意),你应该把它添加到你的sudo配置中:

    %www-data     ALL = NOPASSWD: /usr/bin/whoami
    

    这使得www数据组可以以root身份运行
    whoami
    ,而不需要交互式密码提示

    我要说的是,这是一个糟糕的想法。您的Web服务器/PHP不应具有对整个系统的root访问权限。除了您将要创建的可怕的安全漏洞外:您的sudoers条目并不意味着在更改的用户id下实际执行命令不需要密码。您不能以交互方式提供密码。如果您想了解sudoers文件提供的
    NOPASSWD
    选项,您想在文档中了解它。但再一次:出于安全原因,这是一个坏主意。此外,刚刚在现有超级用户下使用PHP CLI进行了测试,并且
    echo-exec(“sudo-u root whoami”)
    工作正常,只需输入密码即可。将其更改为
    exec(“sudo-u root whoami 2>&1”)
    以便您看到错误消息。谢谢您的建议我添加了
    %www data ALL=(ALL:ALL)ALL
    ,我想这包括了您提到的内容?我知道这样做是一个坏主意,但实际上它不起作用。你的建议很好。但是有没有更安全的方法呢?或者我违反了所有的安全规则?虽然它不需要密码,但实际上它并没有创建任何东西。我尝试使用一个简单的mkdir命令,但没有创建文件夹。提前感谢它只允许您运行whoami。如果您想运行mkdir,您需要将其添加到whoami后面。看看sudo文档