Benutzerverwaltung und Vergabe von Sudo-Rechten in Linux
Die Benutzerverwaltung ist eine zentrale Aufgabe in der Linux-Systemadministration. Administratoren müssen sorgfältig entscheiden, welche Konten erhöhte Rechte erhalten und wie dieser Zugriff kontrolliert wird. Eine sichere und flexible Methode, solche Rechte zu vergeben, ist das Hinzufügen von Benutzern zur Sudo-Gruppe. Der Befehl sudo (Abkürzung für „superuser do“) ermöglicht es ausgewählten Nutzern, Befehle mit administrativen Rechten – in der Regel mit Root-Berechtigungen – auszuführen, ohne sich direkt als Root anmelden zu müssen.
Diese Anleitung zeigt, wie man erweiterte Rechte vergibt, indem man Benutzer der Sudo-Gruppe hinzufügt oder sudo-Regeln über die Linux-Sudoers-Datei anpasst.
Voraussetzungen
- Zugriff auf ein Linux-System als nicht-root Sudo-Benutzer.
Benutzer zur Sudo-Gruppe hinzufügen
Auf den meisten Linux-Systemen erhalten Benutzer in der Sudo-Gruppe administrative Rechte. Dieser Ansatz ist sicherer als die direkte Anmeldung als Root, da er das Risiko unbeabsichtigter, systemweiter Fehler reduziert. Auf RHEL-basierten Distributionen (z. B. CentOS, Rocky Linux) heißt die entsprechende Gruppe häufig wheel. In produktiven Umgebungen gilt es als Best Practice, normalen Benutzerkonten Sudo-Zugriff zu gewähren.
Administratoren können Benutzer mit dem Befehl usermod in Gruppen aufnehmen. Befolgen Sie die folgenden Schritte, um Benutzer mit Sudo-Rechten anzulegen und zu konfigurieren.
Aktuell angemeldeten Benutzer prüfen
$ whoami
Beispielausgabe:
linuxuser
Aktuelle Sudo-Berechtigungen prüfen
$ sudo -l
Beispielausgabe:
Matching Defaults entries for linuxuser on LinuxWorkstation:
    env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin, use_pty
User linuxuser may run the following commands on LinuxWorkstation:
    (ALL) NOPASSWD: ALL
Dies zeigt, dass das Konto linuxuser jeden Befehl ausführen kann, ohne nach einem Passwort gefragt zu werden. Der Befehl ist nützlich, um Benutzerrechte zu prüfen.
Einen neuen Benutzer anlegen
$ sudo adduser john
Sie werden aufgefordert, ein Passwort zu setzen und Benutzerdetails einzugeben. Beispielausgaben des Systems:
info: Adding user `john' ... info: Adding new group `john' ... info: Creating home directory `/home/john' ... passwd: password updated successfully Changing the user information for john Full Name []: john wick Room Number []: 1234 Work Phone []: 9876543210 Home Phone []: 1234567890 Other []: Is the information correct? [Y/n] Y
Hinweis: Standardmäßig weist Linux neuen Benutzern eine primäre Gruppe mit ihrem Namen und manchmal zusätzlich die Gruppe users zu. Diese Gruppen enthalten keine Sudo-Rechte.
Prüfen, ob ein Benutzer Sudo-Rechte hat
$ sudo -U john -l
Typische Ausgabe:
User john is not allowed to run sudo on LinuxWorkstation.
Sudo-Rechte vergeben
$ sudo usermod -aG sudo john
Zum Benutzer wechseln und testen
$ sudo su - john
Nachdem Sie sich als john angemeldet haben, testen Sie:
$ sudo whoami
Erwartete Ausgabe:
root
Mitglieder der Sudo-Gruppe anzeigen
Mit getent prüfen
$ getent group sudo
Beispielausgabe:
sudo:x:27:john,jane
Mit groups prüfen
$ groups jane
Ausgabe:
jane : jane sudo users
Für john entsprechend:
$ groups john
Ausgabe:
john : john sudo users
Zugriff mit der Sudoers-Datei einschränken
Die Datei /etc/sudoers sollte ausschließlich mit visudo bearbeitet werden, um Syntaxfehler zu vermeiden. Während die Mitgliedschaft in der Sudo-Gruppe umfassende Rechte vergibt, können Administratoren mit der Sudoers-Datei Befehle einschränken oder individuell anpassen.
Zugelassene Befehle definieren
Sudoers-Konfiguration für einen bestimmten Benutzer bearbeiten:
$ sudo visudo -f /etc/sudoers.d/john
Befehlsalias anlegen:
Cmnd_Alias UPDATE_AND_UPGRADE = /usr/bin/apt update, /usr/bin/apt upgrade
Zugriff ohne Passwortabfrage gewähren:
john ALL=(ALL) NOPASSWD: UPDATE_AND_UPGRADE
Oder Zugriff auf einen einzelnen Befehl:
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Eigene Regeln prüfen
Zum Benutzer john wechseln und Update/Upgrade-Befehle ohne Passwortabfrage ausführen:
$ sudo apt update
$ sudo apt upgrade
Andere Befehle erfordern weiterhin eine Authentifizierung oder werden je nach Konfiguration verweigert.
Sudo-Nutzerbeschränkungen mit der Sudoers-Datei hinzufügen
Zur Erhöhung der Sicherheit können Regeln festgelegt werden, wie Mitglieder der Sudo-Gruppe mit dem Befehl sudo arbeiten. Beispielsweise lässt sich die Anzahl fehlerhafter Passworteingaben oder die Dauer der Passwortspeicherung steuern. Dies geschieht über die Parameter passwd_tries und timestamp_timeout.
Sudoers-Konfiguration für die Gruppe anlegen
$ sudo visudo -f /etc/sudoers.d/sudogroup
Passwortversuche begrenzen
Defaults:%sudo passwd_tries=1
Diese Regel bedeutet:
- Defaults:%sudo: Gilt für alle Mitglieder der Sudo-Gruppe.
- passwd_tries=1: Nur ein fehlerhafter Passwortversuch ist erlaubt.
Um dies auf einen einzelnen Benutzer anzuwenden:
Defaults:john passwd_tries=1
Passwort jedes Mal abfragen
Defaults:%sudo timestamp_timeout=0
Erklärung:
- timestamp_timeout=0: Keine Karenzzeit. Das Passwort muss bei jedem Sudo-Befehl neu eingegeben werden.
- Standardwert: 15, was 15 Minuten Wiederverwendung pro Terminal-Session erlaubt.
Beschränkungen testen
Ein Paket mit falschem Passwort installieren:
$ sudo apt install nginx
Ausgabe:
sudo: 1 incorrect password attempt
Den Befehl erneut mit richtigem Passwort ausführen:
$ sudo apt install nginx
Da timestamp_timeout auf 0 gesetzt ist, wird das Passwort erneut abgefragt. Nach richtiger Eingabe wird das Paket installiert.
Hinweis: Standardmäßig beträgt timestamp_timeout 15 Minuten, sodass innerhalb dieser Zeit keine erneute Passworteingabe nötig ist.
Benutzer aus der Sudo-Gruppe entfernen
Wenn ein Benutzer keine administrativen Rechte mehr benötigt, können Sudo-Berechtigungen entzogen werden. Im folgenden Beispiel wird john entfernt.
Zu einem anderen privilegierten Benutzer wechseln
$ sudo su - linuxuser
Eigene Sudoers-Konfiguration löschen
$ sudo rm /etc/sudoers.d/john
Warnung: Stellen Sie sicher, dass Sie noch Zugriff auf ein anderes Konto mit Sudo-Rechten haben, bevor Sie den einzigen administrativen Benutzer entfernen.
Benutzer aus der Gruppe entfernen
$ sudo deluser john sudo
Beispielausgabe des Systems:
info: Removing user `john' from group `sudo' ...
Entfernung überprüfen
$ groups john
Beispielausgabe:
john : john users
Zu john wechseln und sudo testen:
$ sudo apt update
Erwartete Ausgabe:
Sorry, user john is not allowed to execute '/usr/bin/apt update' as root on LinuxWorkstation.
Hinweis: Änderungen an Gruppenmitgliedschaften werden nur in neuen Terminalsitzungen wirksam.
Sudo-Zugriff mit der Sudoers-Datei gewähren
Sudo-Rechte können auch ohne Zugehörigkeit zur Sudo-Gruppe vergeben werden. Möglich ist dies, weil sudo die in der Sudoers-Datei definierten Berechtigungen prüft. Normalerweise erhalten Gruppenmitglieder Zugriff durch folgende Zeile in der Hauptdatei:
%sudo   ALL=(ALL:ALL) ALL
Diese Regel gewährt allen Mitgliedern der Sudo-Gruppe vollen Zugriff. Dennoch können für einzelne Benutzer eigene Regeln erstellt werden.
Neuen Benutzer anlegen
$ sudo adduser joe
Eigene Sudoers-Datei erstellen
$ sudo visudo -f /etc/sudoers.d/joe
Vollen Zugriff für joe eintragen:
joe ALL=(ALL) ALL
Gruppenzugehörigkeit prüfen
$ groups joe
Ausgabe:
joe : joe users
Wechseln und testen
$ sudo su - joe
Nun testen:
$ sudo whoami
Erwartete Ausgabe:
root
Fazit
Sie haben gesehen, wie Administratoren Sudo-Rechte entweder über die Zugehörigkeit zur Sudo-Gruppe oder direkt über Regeln in der Sudoers-Datei verwalten. Die Sudo-Gruppe bietet eine bequeme Verwaltung, während eigene Sudoers-Konfigurationen Administratoren eine feinere Kontrolle darüber geben, welche Befehle Nutzer unter welchen Bedingungen ausführen dürfen.


