我想以 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/