feat(sudo): add run0 as a sudo variant (#1067)

This commit is contained in:
Xarblu
2025-03-12 02:07:37 +01:00
committed by GitHub
parent ef7d146282
commit 30f1c3c1b4

View File

@@ -43,6 +43,7 @@ impl Sudo {
.or_else(|| which("sudo").map(Self::determine_sudo_variant)) .or_else(|| which("sudo").map(Self::determine_sudo_variant))
.or_else(|| which("gsudo").map(|p| (p, SudoKind::Gsudo))) .or_else(|| which("gsudo").map(|p| (p, SudoKind::Gsudo)))
.or_else(|| which("pkexec").map(|p| (p, SudoKind::Pkexec))) .or_else(|| which("pkexec").map(|p| (p, SudoKind::Pkexec)))
.or_else(|| which("run0").map(|p| (p, SudoKind::Run0)))
.or_else(|| which("please").map(|p| (p, SudoKind::Please))) .or_else(|| which("please").map(|p| (p, SudoKind::Please)))
.map(|(path, kind)| Self { path, kind }) .map(|(path, kind)| Self { path, kind })
} }
@@ -95,6 +96,13 @@ impl Sudo {
// See: https://linux.die.net/man/1/pkexec // See: https://linux.die.net/man/1/pkexec
cmd.arg("echo"); cmd.arg("echo");
} }
SudoKind::Run0 => {
// `run0` uses polkit for authentication
// and thus has the same issues as `pkexec`.
//
// See: https://www.freedesktop.org/software/systemd/man/devel/run0.html
cmd.arg("echo");
}
SudoKind::Please => { SudoKind::Please => {
// From `man please` // From `man please`
// -w, --warm // -w, --warm
@@ -131,6 +139,7 @@ pub enum SudoKind {
Sudo, Sudo,
Gsudo, Gsudo,
Pkexec, Pkexec,
Run0,
Please, Please,
} }