最近寫防火牆的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被壞人拿下,那麼服務器也就被人輕易的拿下了~~需慎重~~