1. 程式人生 > >PHP函式 exec 獲取更高許可權(sudo)

PHP函式 exec 獲取更高許可權(sudo)

在伺服器環境 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: [確定]"
// }