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
PHP函数 exec 获取更高权限(sudo)_第1张图片

可通过给用户apache添加可使用sudo命令的权限,来使exec()函数获取更高执行权限。

以超级用户(如root用户)执行 visudo 来编辑配置文件。

在配置文件中添加
apache ALL=(ALL) NOPASSWD:ALL
如下图:
PHP函数 exec 获取更高权限(sudo)_第2张图片

至此,用户apache会有近似root的执行权限。
在执行的命令前添加sudo,例:

$result = exec("sudo service postfix restart", $outcome, $status);
var_dump($outcome);
// array(2) {
//   [0]=>
//   string(25) "关闭 postfix:[确定]"
//   [1]=>
//   string(26) "启动 postfix: [确定]"
// }

更多关于sudo命令的权限配置可移步
http://man.linuxde.net/sudo

你可能感兴趣的:(php)