簡體   English   中英

在CENTOS 7上運行php shell_exec sudo

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM