2017-07-27 130 views
0

我正在運行一個CentOS 7服務器,我希望能夠BanUnban某些IP與Fail2banPHP exec()和UnBain IP與fail2ban

但是它不工作,當我運行下面的代碼:

$exec = exec('sudo fail2ban-client set apache banip 0.0.0.0', $output, $return); 

var_dump($exec);  
var_dump($output); 
var_dump($return); 

我需要PHP的一些特殊權限,這就是爲什麼它不會工作?

當我運行它時,$return變量吐出了1。我知道0表示它是Successful

雖然$output不返回任何東西。

+0

你有沒有檢查這個線程:https://serverfault.com/questions/285256/how-to-unban- an-ip-properly-fail-fail/475117? –

+0

這些命令在SSH中以sudo方式工作。他們不通過可執行文件...我猜這是一個sudo問題 – Borsn

回答

1

我想你需要一個sudo密碼。如果你有一個root用戶,這確實是這樣的,你需要做的是這樣的:

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < yourpass.key'; 

$exec = exec($command, $output, $return); 

var_dump($exec);  
var_dump($output); 
var_dump($return); 


哪裏yourpass.key是包含密碼root文件。按照上面的方式,密碼文件必須與PHP腳本位於同一目錄中。但是,您可以更改該路徑。

舉例來說,如果你要存儲在/home文件只寫

$command = 'sudo -u root -S fail2ban-client set apache banip 0.0.0.0 < /home/yourpass.key'; 
+0

我可以將密碼添加爲文本嗎?像這樣:''sudo -u root -S fail2ban-client set apache banip 0.0.0.0 Borsn

+0

用戶'root'登錄被禁用。另一個用戶必須登錄,然後'su'。但是php在內部運行,所以它應該讓它'root'。 – Borsn

+0

@Borsn是的,但我不會推薦它作爲一個安全問題。如果你仍然想這樣做:''sudo -u root -S fail2ban-client set apache banip 0.0.0.0 << password123''另外,我相信你將無法使用root用戶PHP如果被禁用。記住:Exec仍然調用一個正常的shell。 – NullDev