Fix: Fehlerbehandlung bei sudo-Ausführung verbessert
This commit is contained in:
+10
-2
@@ -1,6 +1,7 @@
|
|||||||
|
use crate::log::{LogLevel, log};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::os::unix::process::CommandExt;
|
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.
|
/// 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 {
|
pub fn is_run_as_root() -> bool {
|
||||||
unsafe { libc::geteuid() == 0 }
|
unsafe { libc::geteuid() == 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Startet das Programm mit Root-Rechten über `sudo` neu.
|
/// Startet das Programm mit Root-Rechten über `sudo` neu.
|
||||||
///
|
///
|
||||||
/// Diese Funktion versucht das Programm mit erhöhten Rechten neu zu starten.
|
/// Diese Funktion versucht das Programm mit erhöhten Rechten neu zu starten.
|
||||||
pub fn run_as_root() {
|
pub fn run_as_root() {
|
||||||
let commandline_args: Vec<String> = env::args().collect();
|
let commandline_args: Vec<String> = 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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user