我需要使用 qt 小部件应用程序在根目录中创建目录。
void Home::on_pushButton_clicked()
{
system("mkdir /bin/mydir");
}
但是,如何在 /bin 文件夹中创建文件夹之前获得 root 权限
您可以在编程中使用 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");
如果您希望您的应用程序访问某些需要 root 权限的资源,您必须以 root 身份运行该应用程序。例如
sudo your_application_name
或以 root 身份登录,然后运行该应用程序。
程序启动后无法获得root权限;只允许(暂时或最终)放弃特权。
最好的方法通常是调用诸如gksudo或ksudo之类的程序,系统将以 root 身份调用它们,此时它们会暂时放弃 root 权限,询问用户是否同意,关闭他们与 GUI 系统的连接,重新获得 root 权限和执行动作。