在Qt QProcess中运行sudo命令

4

我正在使用Qt开发软件,在其中创建了一个终端。我通过QProcess运行不同的命令,但当我运行root命令时,它会在终端中要求密码。我尝试通过sudo运行,但它只接受终端中的密码。是否有办法从其他来源提供密码,例如弹出窗口或文本文件?

3个回答

4
我已经创建了一个以"bash"作为程序的QProcess。
然后只需要向其写入内容即可:
echo mypassword | sudo -S ifconfig eth0 192.168.1.123\n

3

您可以尝试以下方法:

  • 以root身份运行应用程序(实际上这是非常糟糕的想法!)
  • 编辑sudoers文件并将要运行的命令添加到该文件中。然后,您可以像sudo run_x_cmd这样运行这些命令,无需输入密码,即您的QProcess可以运行这些命令,并且您不会被要求输入密码。

sudoers文件是一个不错的方法,但理想情况下,应该为应用程序创建一个单独的用户,并且只将其所需运行的进程添加到sudoers文件中。更好的方法是将特权进程分离到另一个应用程序中,将其与用户界面分开,并将其添加到sudoers文件中。 - TheDarkKnight
感谢您的建议,我在这里找到了我的问题解决方案:https://dev59.com/1GAg5IYBdhLWcg3wq8eU - Noor

0

为了从命令中获取输入,将密码添加到文本文件中是一个非常糟糕的想法,因为它会削弱安全性。

sudo 1.8版本提供了插件架构,允许您从应用程序中链接到它,并可能为您提供解决方案。

sudo插件API的SDK可以在文档中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接