我想从我的C / Qt代码中以root用户身份执行linux命令.
最终应该实现一个请求root pass的对话框,但是对于no,我可以硬编码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中根帐户被锁定; gksudo或kdesudo取决于运行环境.其中一个应该预先安装在任何现代Linux发行版上,或者您可以在应用程序中部署一个副本.
当然,如果当前用户没有权限通过sudo运行东西,它将无法工作,但这是一种正常的安全措施,你不应该解决它.
标签:c,linux,qt,command
来源: https://codeday.me/bug/20191009/1876881.html