【发布时间】:2013-11-07 15:42:41
【问题描述】:
我需要使用 qt 小部件应用程序在根目录中创建目录。
void Home::on_pushButton_clicked()
{
system("mkdir /bin/mydir");
}
但是,如何在/bin文件夹中创建文件夹之前获得root权限
【问题讨论】:
我需要使用 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权限;只允许(暂时或最终)放弃特权。
最好的办法通常是调用gksudo或ksudo之类的程序,系统会以root身份调用,此时他们暂时放弃root权限,查询用户同意,关闭他们与 GUI 系统的连接,重新获得 root 权限并执行操作。
【讨论】:
如果您希望您的应用程序访问某些需要 root 权限的资源,您必须以 root 身份运行该应用程序。
例如
sudo your_application_name
或以 root 身份登录,然后运行该应用程序。
【讨论】: