c++ - 在 Qt 中以 root 身份执行 Linux 命令

标签 c++ linux qt command

我想以 root 用户身份从我的 C++/Qt 代码中执行一个 linux 命令。 最终应该实现一个请求 root pass 的对话框,但我不能硬编码 root 密码。

这是我到目前为止所做的:

QProcess p;
p.start( "dmidecode" );
p.waitForFinished(-1);

QString p_stdout = p.readAllStandardOutput();
QString p_stderr = p.readAllStandardError();

它适用于不请求 root 权限的命令。但是我想执行诸如“zypper up”或“dmidecode”之类的命令,如果没有 root 密码,我将无法执行这些命令。

也许可以用 void QProcess::setEnvironment ( const QStringList & environment ) 来做些什么?

谢谢

最佳答案

如果您以普通用户身份运行,则无法提升您的权限,除非您是 suid,您可能不希望整个应用程序都这样做。
它的完成方式是通过外部助手;你想要一些 sudo 而不是 su 的东西,因为在 Ubuntu 中 root 帐户被锁定; gksudo 或 kdesudo 取决于运行环境。其中一个应该预装在任何现代 linux 发行版上,或者您可以使用您的应用程序部署一个拷贝。
当然,如果当前用户没有通过 sudo 运行东西的权限,它就不会工作,但这是一种正常的安全措施,你不应该绕过它。

关于c++ - 在 Qt 中以 root 身份执行 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7036588/

相关文章:

c++ - 将 do/while 转换为并行 do/while 循环

c++ - 在 header 中声明任何 iostream 相关对象会在尝试初始化时引发错误

C++ 引用数组

linux - SVN 在 Windows XP 上提交

linux - session 负责人如何在 Linux 中控制 tty?

c++ - 波普勒替代品

qt - 如何将 QListWidget 中的项目设置为最初突出显示?

c++ - `snprintf_s` 错误的安全感

linux - 读取带有 unicode 字符的文本文件 - Python3

c++ - 在 Qt 中为新创建的 Action 设置快捷方式