設置讓php能夠以root權限來執行exec() 或者 shell_exec()


前言:php經常需要在服務器端使用exec()來做一些事情、這時候很多事情都需要root權限來執行命令!默認都是不支持的。

一、查看啟動你php的進程的用戶是誰。

可以通過在命令行執行:ps -ef | grep php來看。或者在php中執行 echo exec('whoami') 來查看。centos下默認會是nobody。 nobody默認沒有任何權限。

此時先自己添加一個用戶和組。

/usr/sbin/groupadd xxxx
/usr/sbin/useradd -g xxxx -s /bin/bash xxxx

加完用戶后、vim /etc/passwd 里面就可以看到你添加的用戶了。

二、修改php啟動用戶為您剛添加的用戶

找到你得php安裝的地方的php-fpm.conf 。打開配置文件、編輯里面的 user = xxxx;  group = xxxx; (xxxx為您剛才添加的用戶)

重啟php-fpm(service php-fpm restart)

重復上面查看php啟動進程的用戶、應該已經變了。

三、添加剛才的用戶xxxx到sudoers里面

visudo //修改/etc/sudoers的內容
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
xxxx   ALL=(ALL)       ALL //新添加這一行
%xxxx        ALL=(ALL)       NOPASSWD: ALL  //設置xxxx組下面的用戶使用sudo不需要輸入密碼

四、到這里已經可以正常在exec中使用sudo  your command來執行命令了!!!!

當然、最好不要在生產線上環境使用哦!可以在內網機器上面實現!一切為了安全。

本文僅作為自己備忘記錄、如果有出入、莫見怪哈!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM