【问题标题】:PHP: Run Shell Script as root userPHP:以 root 用户身份运行 Shell 脚本
【发布时间】:2014-05-23 12:17:50
【问题描述】:

我正在尝试以 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.

我也遵循了these 方法,但最终出现no permission 错误

【问题讨论】:

  • sudo 是交互式的,并且您从脚本运行它,这就是它失败的原因,脚本无法提供密码。您是否可以使用 sudo 运行 PHP,在这种情况下脚本仍然具有 root 权限?例如sudo php script.php
  • 其实这取决于系统是如何配置的。您可以在不询问密码的情况下使 sudo 工作
  • 在 /etc/sudoers 中发布您的条目
  • @LorenzoMarcon 是的,你是对的,现在只是阅读手册页。您可以使用 -S 选项(我 认为)通过标准输入传递密码,因此您可以在单行中执行此操作。看看手册:sudo.ws/sudo/sudo.man.html
  • 尽管实际这样做的安全隐患是巨大的。请不要,至少在生产环境中。

标签: php bash shell


【解决方案1】:

您可能会遇到几个问题:

  • 运行php进程的用户必须有sudo权限(检查visudoers命令)
  • 没有设置环境,所以$PATH变量不包含sudo命令的路径
  • sudo 可能需要密码。要么更改 sudoers 文件,添加 NOPASSWORD,这将非常不安全。或者你必须使用管道(proc_open),并通过标准输入管道传递密码

我设法找到了这样做的方法,但在本网站上的一些人的帮助下:

load .profile with proc_open()
proc_open interaction

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多