fix: use sudo when pkexec not found

This commit is contained in:
GyDi 2023-08-12 15:58:37 +08:00
parent 241b22a465
commit 38a9a9240d
No known key found for this signature in database
GPG Key ID: 9C3AD40F1F99880A

View File

@ -28,11 +28,19 @@ pub fn grant_permission(core: String) -> anyhow::Result<()> {
let output = { let output = {
let path = path.replace(' ', "\\ "); // 避免路径中有空格 let path = path.replace(' ', "\\ "); // 避免路径中有空格
let shell = format!("setcap cap_net_bind_service,cap_net_admin=+ep {path}"); let shell = format!("setcap cap_net_bind_service,cap_net_admin=+ep {path}");
Command::new("pkexec")
.arg("sh") let sudo = match Command::new("which").arg("pkexec").output() {
.arg("-c") Ok(output) => {
.arg(shell) if output.stdout.is_empty() {
.output()? "sudo"
} else {
"pkexec"
}
}
Err(_) => "sudo",
};
Command::new(sudo).arg("sh").arg("-c").arg(shell).output()?
}; };
if output.status.success() { if output.status.success() {