PHP函式 exec 獲取更高許可權(sudo)
阿新 • • 發佈:2019-01-23
在伺服器環境 apache + php下,PHP函式exec()執行whoami
得到的結果是 apache
,說明是以使用者apache來執行命令。
$result = exec("whoami", $outcome, $status);
var_dump($outcome);
//array(1) { [0]=> string(6) "apache" }
檢視apache的配置檔案/etc/httpd/conf/httpd.conf如下:
vi /etc/httpd/conf/httpd.conf
可通過給使用者apache
新增可使用sudo命令
的許可權,來使exec()函式
獲取更高執行許可權。
以超級使用者(如root使用者)執行 visudo
在配置檔案中新增
apache ALL=(ALL) NOPASSWD:ALL
如下圖:
至此,使用者apache會有近似root的執行許可權。
在執行的命令前新增sudo
,例:
$result = exec("sudo service postfix restart", $outcome, $status);
var_dump($outcome);
// array(2) {
// [0]=>
// string(25) "關閉 postfix:[確定]"
// [1]=>
// string(26) "啟動 postfix: [確定]"
// }