bash - CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作
问题描述
我正在尝试通过 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
但我仍然收到以下错误:
我们相信您已经收到了本地系统管理员的常规讲座。它通常归结为以下三件事:#1) 尊重他人的隐私。#2) 打字前三思。#3) 权力越大,责任越大。sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 助手{"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');
推荐阅读
- c# - 使用 Autofac 4.2.1 注入已注册的命名服务未按预期工作
- java - JAVA中字符串内的搜索模式
- iis - 如何拒绝嵌入式用户代理访问授权服务器
- php - Laravel Passport 中间件 "auth:api" 总是返回 401 和有效令牌
- reactjs - Country-list:循环遍历国家对象进行渲染
返回错误 - android - 服务未运行,但已创建
- oracle - DBeaver 中的 Oracle 数据库备份
- python-3.x - 计算每列内的行数?XLRD 封装
- spring-cloud-stream - SCDF 2.2.1 中的 proxyBeanMethods 异常
- php - 如何在 groupBy laravel 之后对集合求和