【问题标题】:How to get root permission inside Qt program?如何在 Qt 程序中获得 root 权限?
【发布时间】:2013-11-07 15:42:41
【问题描述】:

我需要使用 qt 小部件应用程序在根目录中创建目录。

void Home::on_pushButton_clicked()
{
    system("mkdir /bin/mydir");
}

但是,如何在/bin文件夹中创建文件夹之前获得root权限

【问题讨论】:

标签: c++ linux qt shell root


【解决方案1】:

您可以在编程中使用 pkexec 命令获取 root 密码,如下所示:

 void Home::on_pushButton_clicked()
 {
    system("pkexec mkdir /bin/myDir");
 }

或者你可以尝试使用QProcess类,但是对于你的目的,pkexec就足够了。但是在这种模式下你必须手动输入密码,但是如果你想在不手动输入密码的情况下获得root权限,你可以输入你的密码里面的代码,那么你可以考虑下面的代码:

QProcess process;
process.start("echo your_password | sudo -S mkdir /bin/myDir");

【讨论】:

    【解决方案2】:

    程序启动后无法获得root权限;只允许(暂时或最终)放弃特权。

    最好的办法通常是调用gksudoksudo之类的程序,系统会以root身份调用,此时他们暂时放弃root权限,查询用户同意,关闭他们与 GUI 系统的连接,重新获得 root 权限并执行操作。

    【讨论】:

      【解决方案3】:

      如果您希望您的应用程序访问某些需要 root 权限的资源,您必须以 root 身份运行该应用程序。 例如

      sudo your_application_name
      

      或以 root 身份登录,然后运行该应用程序。

      【讨论】:

        猜你喜欢
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        相关资源
        最近更新 更多