In diesem kurzen Tutorial wird beschrieben, wie man einem normalen Benutzer das Recht einräumt, ein einzelnes Skript mit sudo
auszuführen. Das Tutorial ist auf alle Linux-Distributionen anwendbar, welche sudo
[1. sudo – Wikipedia] unterstützen.
Schritt 1: Skript und Benutzerkonto erstellen
Zuerst wird natürlich das Skript benötigt, welches der neue Benutzer später ausführen soll. Als Beispiel mag hier folgendes einfaches Beispiel dienen:
#!/bin/bash echo "Hallo Welt."
Wichtig! Der Benutzer, welcher das Skript später ausführen soll, darf selbst keine Schreibrechte darauf besitzen. Andernfalls könnte er das Skript bearbeiten und durch eintragen von bash
eine root-shell öffnen. Danke an Gerald für diesen wichtigen Hinweis.
Der Benutzer kann, sofern er nicht schon existiert, mit folgendem Kommando angelegt werden:
sudo adduser USERNAME
Schritt 2: /etc/sudoers konfigurieren
Um einem Benutzer das Recht zu verleihen, gibt es grundsätzlich mehrere Möglichkeiten.
Benutzer einer Gruppe hinzufügen
Auf vielen Linux-Distributionen existiert bereits eine Gruppe, deren Mitglieder die Berechtigung zur Verwendung von sudo
besitzen. Unter Ubuntu ist dies z.B. die Gruppe ’sudo‘. Unter RHEL, CentOS und Fedora ist dies bspw. die Gruppe ‚wheel‘. Um welche Gruppe es sich konkret handelt, kann in der Datei /etc/sudoers nachgeschlagen werden. Dort findet sich auf einem Ubuntu 16.04 LTS z.B. folgender Eintrag:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Da dem Benutzer im hier beschriebenen Fall jedoch nur erlaubt werden soll, ein einziges Skript mittels sudo
auszuführen, ist diese Methode ungeeignet.
Benutzer in /etc/sudoers
Um einem Benutzer das Recht zu gewähren, ein bestimmtes Skript oder Programm mit sudo
auszuführen, kann der Benutzer wie folgt in die Datei /etc/sudoers eingetragen werden.
Wichtig! Die Datei /etc/sudoers sollte nur als root mit dem Kommando visudo
editiert werden, da hiermit eine Syntaxprüfung erfolgt. Eine Beschädigung der Datei /etc/sudoers, z.B. durch Syntaxfehler, kann dazu führen, dass das gesamte System unbrauchbar wird.
# User privilege specification USERNAME ALL=/path/to/script.sh
Mit obiger Zeile wird dem Benutzer ‚USERNAME‘ erlaubt, das Skript unter /path/to/script.sh mit sudo
auszuführen.
Diese Methode ist bereits geeignet, um die gestellte Aufgabe zu lösen.
Datei unter /etc/sudoers.d/ erstellen
Unter aktuellen Versionen von Debian, Ubuntu, RHEL, CentOS und Fedora besteht die Möglichkeit, eine Datei im Verzeichnis /etc/sudoers.d/ zu erstellen, welche den Eintrag aus dem vorangegangenen Abschnitt enthält. Voraussetzung dafür ist, dass die Datei /etc/sudoers folgende Direktive enthält:
# See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Beachte: Das Zeichen ‚#‘ vor ‚includedir‘ stellt in diesem Fall kein Kommentarzeichen dar.
Diese Methode hat den Vorteil, dass die Datei /etc/sudoers unverändert bleibt und es bei Updates nicht zu einem Versionskonflikt kommen kann.
Fazit
Mittels /etc/sudoers ist es möglich, sudo
-Berechtigungen granular an Benutzer zu delegieren. Neben dem in diesem Tutorial beschriebenen Beispiel existieren noch weitere Möglichkeiten. Beispiele dazu finden sich in der Manpage von sudoers.
Nicht vergessen: Wenn man die Ausführung eines Scripts erlaubt, darf der Benutzer keine Schreibrechte darauf haben, sonst kann er durch
Einfügen von z.B. „bash“ eine Root-Shell öffnen.
Hallo Gerald,
Danke für Deinen Hinweis. Ich habe ihn in das Tutorial mit aufgenommen.
MfG
Jörg