如何解决CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作
我正在尝试通过 IPtables 管理来做一个网络界面。
我创建了一个文件,名字是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
但我仍然收到以下错误:
我们相信您已经收到了本地系统的常规讲座 行政人员。它通常归结为以下三件事:#1) 尊重他人的隐私。 #2) 打字前请三思。 #3) 与 能力越大责任越大。 sudo:需要终端 读取密码;要么使用 -S 选项从标准读取 输入或配置一个 askpass helper{"mode":"full","isActive":false}
但是,如果我使用
apache ALL=(root) NOPASSWD: ALL
一切正常。
我仔细检查了我的目录并使用了确切的路径
[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh
这里超级无能,谁能帮我指点一下? :'(
解决方法
这已经解决了。
如果有人有同样的问题,答案就在这里
bash 是多余的
只需删除 bash 并像这样运行
$output = shell_exec('/usr/bin/iptables.sh 2>&1');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。