diff --git a/src/sudo.rs b/src/sudo.rs index fd0ef65..e4c1564 100644 --- a/src/sudo.rs +++ b/src/sudo.rs @@ -1,6 +1,7 @@ +use crate::log::{LogLevel, log}; use std::env; use std::os::unix::process::CommandExt; -use std::process::Command; +use std::process::{Command, exit}; /// Prüft, ob das Programm mit Root-/Administrator-Rechten ausgeführt wird. /// @@ -11,10 +12,17 @@ use std::process::Command; pub fn is_run_as_root() -> bool { unsafe { libc::geteuid() == 0 } } + /// Startet das Programm mit Root-Rechten über `sudo` neu. /// /// Diese Funktion versucht das Programm mit erhöhten Rechten neu zu starten. pub fn run_as_root() { let commandline_args: Vec = env::args().collect(); - let _output = Command::new("sudo").args(&commandline_args).exec(); // Bye bye never returns + let err = Command::new("sudo").args(&commandline_args).exec(); + log( + "auth", + &format!("Fehler beim Ausführen von 'sudo': {}", err), + LogLevel::Error, + ); + exit(1); }