ubuntu - sudo in php exec

最近写防火墙的WEB版,需要在PHP中调用linux系统命令,但是防火墙有关的执行都需要管理员权限才能执行。

在ubuntu下,Apache2的运行账户默认是www-data,默认是不能通过sudo来获得管理员权限的。查了一下,试了几种做法,搞定了。

 

#1 为了以防万一,要查一下apache的运行账户

<?php

exec("whoami",$output,$result);

print_r($output);

?>

 

运行一下,得到当前账户www-data

#2 给与www-data sudo权限,并且免密码

命令行输入: nano /etc/sudoers  或者 visudo

插入一行  www-data ALL=(ALL:ALL) NOPASSWD:ALL

如下图所示

技术分享

 

#3 应用

<?php
exec("sudo iptables-save",$output,$result);
print_r($result);
?>

如上所示,即可在管理员权限下执行shell

 

需要注意的是,如上的操作会给服务器带来很大的安全隐患,因为www-data用户不需密码就可以提升到管理员权限。如果Apache被坏人拿下,那么服务器也就被人轻易的拿下了~~需慎重~~

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。