2017-10-11 111 views
0

我正在開發一個php應用程序,它用作一個seever端應用程序的GUI。由於應用程序的性質,它需要運行需要root權限的exec命令。 (比如重新啓動服務)。我可以通過給nginx sudo訪問特定的命令來解決它。但是它仍然需要一些使用CLI很容易實現的功能。以root權限創建一個CLI應用程序

現在我面臨的問題是以php爲參數,以root身份啓動此應用程序。這是我啓動我的應用程序,

path/application - e "command I want"

的Web應用程序將只有一個安裝在服務器上(有點像一個控制面板)。我應該專注於提供服務而不是應用程序嗎?如果我做了一項服務,我將如何讓php聯繫它?我在過去使用.NET和C++開發了Windows應用程序。

我確實看過dotnet core來製作Linux服務,但我不認爲這將是我所需要的。我能有什麼建議嗎?我需要的應用程序都是root訪問,可能沒有sudo。

回答

1

該應用程序可以是一個setuid根應用程序嗎?請測試它的安全性做之前,所以

chown root /path/to/binary 
chmod u+s /path/to/binary 
+0

好,如果這可以作爲根用戶身份執行應用程序的話,我只會讓命令的應用程序中的白名單(具體的命令),所以只有他們才能運行。我對Linux沒有太多的知識,所以我會嘗試這種方法並讓你知道。 – kks21199

+0

此方法有效。你也可以在C++的main函數中設置'setuid(0)'。雖然它沒有在我的情況下工作。我使用可以通過參數訪問的硬編碼命令編寫了我的C++應用程序..這樣應用程序就不會造成太大的損害。唯一的缺點是,當需要新功能時,應用程序將需要更新。 – kks21199