2011-09-13 219 views
0

我想從PHP運行一個「sudo」命令,我已經閱讀了網絡上的所有教程,但沒有解決方案。至少我已經將LAMP的默認「nobody」用戶添加到根組 - 但沒有效果。從PHP腳本運行「sudo」命令?

echo exec("sudo echo hi"); 

對安全性的說明:

雖然有些人在這裏都downvoting這是由於他們堅信,這將創建一個很大的安全漏洞,它會摧毀整個互聯網,也有一些有效的情況下,爲此,例如在測試中。從PHPUnit/Behat套件運行安裝腳本來配置環境可能需要sudo權限。這些腳本無法從應用程序訪問,也不會產生安全漏洞,因爲事實上它們有助於確保不存在此類漏洞。

+6

不這樣做。這是一個巨大的安全漏洞。 – thwd

+1

不應該通過這類問題來鼓勵他人,因爲這會造成嚴重的安全問題。 – Musa

回答

9

將用戶添加到根組不會給他們sudo權限,這就是/ etc/sudoers的用途。

說實話,你正在做什麼像一個巨大的安全漏洞聽起來

編輯:從評論複製...

我的建議是這樣的,建立下一個cron root用戶,它檢查PHP可以寫入的文件或數據庫,解析它並刪除指定的用戶。

+0

那麼,我想創建一個biiig,大的安全漏洞,我一定想避免這個!所以你看我有多麼絕望:-D 願你給我一個好的**和安全的解決方案嗎? (僅供參考的理由:我想用php添加和刪除FTP用戶..) –

+0

您剛剛告訴我們的是您想運行一個命令。不知道你想要完成什麼,我們如何嘗試並指出你更好的解決方案? –

+0

我的問題是,我如何運行sudo cmd!這是真的..我之所以想知道,是因爲ftp用戶的事情..我寫這個,只是爲了告訴你**我的計劃是什麼,因爲你告訴我關於安全漏洞的問題,我想你是對的!也許你可以給我一個關於如何解決我的問題的提示。 –

0

您應該在Web服務器用戶添加到/etc/sudoers文件

1

我想你應該在你的腳本運行CHMOD U +秒。或者也許ug + s(根據您的需要)。這樣你將有su訪問權限。

0
<?php 

phpinfo(); 

?> 

你首先需要找到你的web服務器的用戶,給他們根privialges,上面的代碼會告訴你這一點,但其他人說,這是一個巨大的安全漏洞,我強烈不建議這樣做。

0

拋開所有的安全問題,這是可能的。事實上,正如Jon Stirling所說,將用戶添加到特定的組不會幫助你。你需要用「visudo命令」爲根,以指定正確的sudo的線路,如:

nobody ALL=(root) NOPASSWD:/usr/bin/echo hi 

這將讓用戶root,執行命令「的/ usr /斌/回聲喜」作爲用戶根。

現在對於通過PHP執行它:

echo exec("/usr/bin/sudo -u root /usr/bin/echo hi");