2012-10-04 63 views
1

我有一個128MB的VPS,每隔一段時間它就會變得混亂。重新啓動會解決這個問題,但如果我想從瀏覽器重新啓動(密碼保護頁面),該怎麼辦?如何使用PHP的shell_exec()函數「www-data」重新啓動我的機器(Natty Narwhal)?使用shell_exec()重新啓動服務器?

我很困惑,因爲它需要sudo。事情是我從來沒有登錄爲萬維網數據,它會是我的sudo密碼?另外我將如何包含一個密碼來執行此操作?

會使用root工作嗎?如果是這樣,那麼我將如何從www數據做su?

回答

5

您確定shutdown腳本需要執行root或sudo權限。如果您確實需要通過可通過網頁訪問的頁面重新啓動服務器,則一種方法是將www-data添加到sudoers列表中,但只有可用於訪問shutdown命令。

編輯/etc/sudoers,並添加以下行:

%www-data ALL=NOPASSWD: /sbin/shutdown 

該生產線將允許www-data組訪問sudo /sbin/shutdown沒有密碼的需求 - 所以請確保您可以訪問的Web腳本ISN不公開。

編輯sudoers文件後,您可以使用下面的腳本重新啓動:

shell_exec('sudo /sbin/shutdown -r now'); 
+0

它的工作!謝謝。我只是把這個放在管理面板上,所以我很安全 – user115422

1

如何通過SSH隧道使用RSA密鑰?

如果您將公鑰添加到其他用戶的授權主機文件中,您可以使用它爲其他用戶(root)生成www-data用戶RSA密鑰和SSH -i。那麼只要您使用密鑰進行交互式SSH,就不需要密碼。

您可能想要檢查確切的需求,並確保這不是安全風險並符合您的情況,但這是我首先想到的。

希望它有幫助!

2

另一種方法可以做到這一點是要有每隔幾分鐘運行的根cron作業,檢查了文件。如果找到該文件,則將其刪除並重新引導系統。您的網頁只需要創建該文件。

+0

不錯的主意,但這將使用更多的內存,我想重新啓動的東西,以減少內存!謝謝反正,我^ 1你的答案,因爲它工作 – user115422