Ich schreibe ein Shell-Skript, das mit Root-Rechten ausgeführt werden muss.
Ich kann mit sudo -nv || echo "no sudo"
, aber das hilft mir nicht, wenn seine Zugangsdaten immer noch von sudo
zwischengespeichert werden , aber mein Skript hat er damit nicht aufgerufen. Ich habe also keine Möglichkeit, auf einen Benutzer zu reagieren, und rufe mein Skript nicht mit sudo auf.
Ich könnte sudo
einfügen vor jedem Befehl, der es benötigt, also würde es ausreichen, nur zu prüfen, ob der Benutzer Root-Rechte hat, aber es scheint mir, dass es eine bessere Lösung geben sollte.
Ich suche nach einem Befehl, den ich in mein Skript einbauen kann, der den Benutzer nach Root-Rechten fragt und, falls vorhanden, den Rest des Skripts so ausführt, als ob der Benutzer es überhaupt mit Root-Rechten aufgerufen hätte.
Was ich will:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Zweimal bearbeitet
Akzeptierte Antwort:
Testen Sie, ob Sie root sind, und starten Sie andernfalls mit sudo
neu , zum Beispiel:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi