437 Stimmen

Wie man in einem Bash-Skript überprüft, ob man als Root läuft

Ich schreibe ein Skript, das Root-Berechtigungen erfordert, und ich möchte es so machen, dass es einfach "Bitte als Root ausführen" ausgibt und beendet, wenn das Skript nicht als Root ausgeführt wird.

Hier ist etwas Pseudocode für das, was ich suche:

if (whoami != root)
  then echo "Bitte als Root ausführen"

  else (Aktionen ausführen)
fi

exit

Wie könnte ich das am besten (sauber und sicher) umsetzen? Vielen Dank!

Ach, um es klarzustellen: Der Teil (Aktionen ausführen) würde das Ausführen von Befehlen erfordern, die selbst Root-Rechte benötigen. Das Ausführen als normaler Benutzer würde also einfach einen Fehler verursachen. Dies soll nur dazu dienen, ein Skript sauber auszuführen, das Root-Befehle erfordert, ohne sudo im Skript zu verwenden. Ich suche nur etwas syntaktischen Zucker.

-1voto

Pramod Kharade Punkte 1739

Meine Meinung, die in Bash läuft:

#!/bin/bash

# Anzeige der UID-Variable
echo "Deine UID ist $UID"

# Überprüfen des Root-Benutzers über die UID
if [ "$UID" -eq 0 ]; then
    echo "Du bist root"
else
    echo "Du bist kein Root-Benutzer" >&2
fi

-1voto

Contango Punkte 70203

Mein Einzeiler:

[ "$(whoami)" != root ] && echo "Bitte als Root ausführen." >&2 && exit 1

Getestet unter Debian, Ubuntu und Docker.

-2voto

fvillalba89 Punkte 1

Meine Überprüfung für den root Benutzer, ausgeführt in Bash:

#!/bin/bash

if [ "$UID" -eq 0 ]; then
    echo "Du bist root."
else
    echo "Du bist nur ein normaler Benutzer." >&2
fi

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X