我与centos 7上的shell_exec和sudo有问题。从apache执行时,以下行没有输出:
$stat=shell_exec('sudo scripts/usb/hidubs relay cmd ID=HIUPS stat');
var_dump($stat);给空
我已经添加了以下行使用Visudo:
apache ALL=NOPASSWD:/var/www/html/scripts/usb/hidubs-relay-cmd
默认值/var/www/html/scripts/usb/hidubs relay cmd!要求
在/var/log/secure中,我可以阅读如下内容:
6月4日17:45:43 anhelli sudo:apache:TTY=未知;PWD=/var/www/html;用户=根用户;COMMAND=scripts/usb/hidubs relay cmd ID=HIUPS stat
我尝试了su-apache并像上面那样运行sudo,但效果很好。为什么我不能得到shell_exec的输出,有什么想法吗?
非常感谢你的帮助。最好的问候bzc0fq
我终于解决了这个问题。是selinux策略阻止了对hidusb中继cm文件的访问。解决方案使用以下命令添加本地安全策略:
Cat /var/log/audit/audit.log|grep拒绝|grep hidusb-relce-cm|audit2允许-M hidusb-relce-cm
semodule-i hidusb继电器cm。聚丙烯
我在每次运行Audit2允许实用程序时都更改了策略名称。我不得不运行它5次,直到所有的拒绝都被“服务”。我还设置了两次sebool:
setsebool-P httpd\u mod\u auth\u pam on
setsebool-P httpd_统一开启
问题是我必须执行命令
semodule-DB
查看/var/log/audit/audit中隐藏的拒绝。上面的日志对我有用。