2015-08-18 583 views
2

我正在開發Qt中創建終端的軟件。我通過QProcess運行了不同的命令,但是當我運行root命令時,它在終端中詢問密碼。我試圖通過sudo運行,但它只接受終端中的密碼。有什麼方法可以從其他來源提供密碼,如彈出窗口小部件或文本文件?在Qt QProcess中運行sudo命令

回答

1

我創建了一個帶有「bash」的QProcess程序。

然後只寫它:

echo mypassword | sudo -S ifconfig eth0 192.168.1.123\n 
0

將密碼添加到文本文件以便爲命令輸入輸入是一個非常糟糕的主意,因爲它會削弱安全性。

sudo 1.8版提供了一個插件架構,它可以讓您從應用程序鏈接到它,並可能爲您提供解決方案。

sudo插件API的SDK可以找到in the documentation

1

你可以嘗試

  • 運行你的應用程序根(這實在是一個很糟糕的主意,實際上!)
  • 編輯sudoers文件,並添加要運行該文件中的命令。然後,您可以運行這些命令,例如sudo run_x_cmd而不用密碼,即您的QProcess可以運行這些命令,並且不會要求您輸入密碼。
+0

sudoers文件是一個很好的方法,但最好,一個單獨的用戶應該爲應用程序,只有程序它需要運行應該被加入到創建sudoers文件。更好的辦法是將特權進程分解到另一個應用程序,將其與用戶界面分開並將其添加到sudoers文件中。 – TheDarkKnight

+0

感謝您的建議,我在這裏找到了我的問題解決方案http://stackoverflow.com/questions/23322739/how-to-execute-complex-linux-commands-in-qt – Noor