在 Qt QProcess 中运行 sudo 命令

Posted

技术标签:

【中文标题】在 Qt QProcess 中运行 sudo 命令【英文标题】:Run sudo command in Qt QProcess 【发布时间】:2015-08-18 03:47:04 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我创建了一个以“bash”作为程序的 QProcess。

然后写信给它:

echo mypassword | sudo -S ifconfig eth0 192.168.1.123\n

【讨论】:

【参考方案2】:

你可以试试

以 root 身份运行您的应用程序(实际上,这是一个非常糟糕的主意!) 编辑sudoers 文件并将您要运行的命令添加到该文件中。然后你可以在没有密码的情况下运行这些命令,例如sudo run_x_cmd,即你的QProcess 可以运行这些命令,并且不会要求你输入密码。

【讨论】:

sudoers 文件是一个好方法,但理想情况下,应该为应用程序创建一个单独的用户,并且只将需要运行的进程添加到 sudoers 文件中。更好的办法是将特权进程分解到另一个应用程序中,将其与用户界面分离并将其添加到 sudoers 文件中。 感谢您的建议我在这里找到了我的问题解决方案***.com/questions/23322739/…【参考方案3】:

将密码添加到文本文件以获取命令的输入源是一个非常糟糕的主意,因为它会削弱安全性。

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

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

【讨论】:

以上是关于在 Qt QProcess 中运行 sudo 命令的主要内容,如果未能解决你的问题,请参考以下文章

Qt。在 QProcess 中复制资源文件

从 QThread 启动 QProcess [重复]

QT中QProcess调用命令行的痛苦经历

Qt QProcess

如何使用 QProcess 运行 vim 终端

在 Android 平台上通过 QProcess 运行 shell 命令