在 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 命令的主要内容,如果未能解决你的问题,请参考以下文章