[英]php shell_exec sudo on CENTOS 7
我在shell上執行了shell_exec和sudo的問題。從apache執行時,以下行沒有輸出:
$ stat = shell_exec('sudo scripts / usb / hidusb-relay-cmd ID = HIUPS stat');
后續代碼var_dump($統計); 給出NULL
我使用visudo添加了以下行:
apache ALL = NOPASSWD:/ var / www / html / scripts / usb / hidusb-relay-cmd
默認值!/ var / www / html / scripts / usb / hidusb-relay-cmd!requiretty
在/ var / log / secure中我可以看到如下:
Jun 4 17:45:43 anhelli sudo:apache:TTY = unknown; PWD = / var / www / html; USER = root; COMMAND = scripts / usb / hidusb-relay-cmd ID = HIUPS stat
我嘗試過su-apache並運行如上所述的sudo,但它運行正常。 為什么我無法獲得shell_exec的輸出,任何想法?
非常感謝您的幫助。 最好的問候bzc0fq
最后我解決了這個問題。 是selinux策略阻止訪問hidusb-relay-cm文件。 解決方案是使用命令添加本地安全策略:
cat /var/log/audit/audit.log | grep否認| grep hidusb-relay-cm | audit2allow -M hidusb-relay-cm
semodule -i hidusb-relay-cm.pp
每次運行audit2allow實用程序時,我都更改了策略名稱。 我必須運行它5次,直到所有拒絕都被'服務'。 我還必須兩次設置sebool:
setsebool -P httpd_mod_auth_pam on
setsebool -P httpd_unified on
問題是,我必須運行命令
semodule -DB
在/var/log/audit/audit.log中查看隱藏的拒絕以上內容對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.