【问题标题】:PHP sudo: a terminal is required to read the passwordPHP sudo:需要终端才能读取密码
【发布时间】:2021-10-10 09:53:25
【问题描述】:

我有一个脚本,我想从我的 PHP 代码中调用它。以下是我的脚本文件:

listwifi.sh

sudo iwlist wlp1s0 scan | grep SSID

为此,我还使用sudo chmod +x listwifi.sh 授予了可执行权限

我在我的 sudoers 文件末尾添加了以下内容(使用 visudo):

apache ALL = NOPASSWD: /var/www/html/mypath/osscripts/listwifi.sh *
www-data ALL = NOPASSWD: /var/www/html/mypath/osscripts/listwifi.sh *

我也尝试过:

apache ALL = NOPASSWD: /usr/bin /var/www/html/mypath/osscripts/listwifi.sh *
www-data ALL = NOPASSWD: /usr/bin /var/www/html/mypath/osscripts/listwifi.sh *

我正在使用以下 PHP 代码来调用此文件:

exec(getenv('BASE_DIR') . "/osscripts/listwifi.sh", $output);
var_dump($output);

但我不断收到以下错误:

sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 帮助器

如何让 PHP 以 root 身份执行此文件而无需输入密码?

【问题讨论】:

  • sudo从脚本中取出,将脚本调用为sudo /var/www/html/mypath/osscripts/listwifi.sh
  • @sabik 谢谢 :) 那行得通。您能否解释一下这与在脚本中使用 sudo 有何不同?
  • sudoers 配置用于通过sudo 调用的命令,而不是从它调用的位置...
  • @sabik 谢谢。你能把它作为答案,以便我可以将其标记为已关闭吗?

标签: php linux shell sudo


【解决方案1】:

sudo从脚本中取出,调用脚本为

sudo /var/www/html/mypath/osscripts/listwifi.sh

sudoers 配置用于通过sudo 调用的命令,而不是从...调用它的位置...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2013-02-08
    • 2016-09-26
    • 2013-03-26
    • 2015-07-23
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多