我可以像这样用Qt处理文件的正常复制:
QFile::copy("/path/file", "/path/copy-of-file");
现在如何复制需要Sudo权限的文件。
答案 0 :(得分:1)
您可以使用QProcess和pkexec以另一个用户的身份执行命令
pkexec允许授权用户以另一个用户的身份执行PROGRAM。如果未指定用户名,则该程序将以管理超级用户root身份执行。
https://www.freedesktop.org/software/polkit/docs/0.105/pkexec.1.html
QProcess *proc = new QProcess(this);
proc->waitForFinished();
QString cmd = "pkexec /bin/cp /path/file /path/copy-of-file";
proc->start(cmd);
if(!proc->waitForStarted()) //default wait time 30 sec
{
qDebug() << "Cannot execute:" << cmd;
}
proc->waitForFinished();
proc->setProcessChannelMode(QProcess::MergedChannels);
if(proc->exitStatus() == QProcess::NormalExit
&& proc->exitCode() == QProcess::NormalExit){
qDebug() << "Success";
} else {
qDebug() << "Cannot copy file" << cmd;
}
答案 1 :(得分:0)
运行shell命令like this
sudo cp /path/file /path/copy-of-file
根据需要设置密码。
$echo <password> | sudo -S <command>