最近写防火墙的WEB版,须要在PHP中调用linux系统命令,可是防火墙有关的执行都须要管理员权限才能执行。php
在ubuntu下,Apache2的运行帐户默认是www-data,默认是不能经过sudo来得到管理员权限的。查了一下,试了几种作法,搞定了。linux
#1 为了以防万一,要查一下apache的运行帐户shell
<?php exec("whoami",$output,$result); print_r($output); ?>
运行一下,获得当前帐户www-dataapache
#2 给与www-data sudo权限,而且免密码ubuntu
命令行输入: nano /etc/sudoers 或者 visudo安全
插入一行 www-data ALL=(ALL:ALL) NOPASSWD:ALL服务器
以下图所示spa
#3 应用命令行
<?php exec("sudo iptables-save",$output,$result); print_r($result); ?>
如上所示,便可在管理员权限下执行shellcode
须要注意的是,如上的操做会给服务器带来很大的安全隐患,由于www-data用户不需密码就能够提高到管理员权限。若是Apache被坏人拿下,那么服务器也就被人轻易的拿下了~~需慎重~~