CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh is not working

我正在尝试通过 IPtables 管理来做一个 Web 界面。

我创建了一个文件,文件名为test.php

$output = shell_exec('bash /usr/bin/iptables.sh 2>&1');
echo $output;

我给了 /usr/bin/iptables.sh NOPASSWD 这样我就可以通过 apache 使用 sudo 执行文件而无需使用密码

sudo iptables -L

sudoers 文件:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

但我仍然收到以下错误:

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper{"mode":"full","isActive":false}

但是,如果我使用

apache ALL=(root) NOPASSWD: ALL

一切正常。

我仔细检查了我的目录并使用了准确的路径

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

超级无知,谁能帮我指个路? :'(

已解决。

如果有人有同样的问题,答案就在这里

https://serverfault.com/questions/1070602/centos-apache-all-root-nopasswd-path-to-shell-sh-is-not-working/

bash is redundant

只需像这样删除 bash 和 运行

$output = shell_exec('/usr/bin/iptables.sh 2>&1');