前言: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來執行命令了!!!!
當然、最好不要在生產線上環境使用哦!可以在內網機器上面實現!一切為了安全。
本文僅作為自己備忘記錄、如果有出入、莫見怪哈!!!!