PHP:以root用户身份运行Shell脚本

PHP:以root用户身份运行Shell脚本,php,bash,shell,Php,Bash,Shell,我正在尝试以root用户身份运行脚本。这是我的密码 echo shell_exec("sudo bash.sh 2>&1"); 这是一个错误 sudo: no tty present and no askpass program specified www-data is not in the sudoers file. This incident will be reported. 我也遵循了这些方法,但最终出现了无权限错误您可能会遇到以下几个问题: 运行php进程的用户

我正在尝试以root用户身份运行脚本。这是我的密码

echo shell_exec("sudo bash.sh 2>&1");
这是一个错误

sudo: no tty present and no askpass program specified
www-data is not in the sudoers file.  This incident will be reported.

我也遵循了这些方法,但最终出现了
无权限
错误

您可能会遇到以下几个问题:

  • 运行php进程的用户必须具有sudo权限(使用
    visudoers
    命令检查)
  • 没有设置环境,因此
    $PATH
    变量不包括sudo命令的路径
  • sudo
    可能需要密码。要么更改sudoers文件,添加
    NOPASSWORD
    ,这将非常不安全。或者您必须使用管道(
    proc\u open
    ),并通过标准输入管道传递密码
我已经设法找到了这样做的方法,但是在这个网站上的人们提供了一些帮助之后:



sudo是交互式的,您通过脚本运行它,这就是它失败的原因,脚本无法提供密码。您是否可以使用sudo运行PHP,在这种情况下,脚本仍然具有root权限?实际上,它取决于系统的配置方式。您可以使sudo工作,而无需在/etc中输入密码/sudoers@LorenzoMarcon是的,你说得对,现在就看手册页。您可以使用-S选项(我认为)通过stdin传递密码,这样您就可以在一行程序中完成这项工作。请看一下手册:尽管实际这样做的安全影响是巨大的。请不要这样做,至少在生产环境中。