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.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
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
$ whoamiBeispielausgabe:
linuxuser
Aktuelle Sudo-Berechtigungen prüfen
$ sudo -lBeispielausgabe:
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 johnSie 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 -lTypische Ausgabe:
User john is not allowed to run sudo on LinuxWorkstation.
Sudo-Rechte vergeben
$ sudo usermod -aG sudo johnZum Benutzer wechseln und testen
$ sudo su - johnNachdem Sie sich als john angemeldet haben, testen Sie:
$ sudo whoamiErwartete Ausgabe:
root
Mitglieder der Sudo-Gruppe anzeigen
Mit getent prüfen
$ getent group sudoBeispielausgabe:
sudo:x:27:john,jane
Mit groups prüfen
$ groups janeAusgabe:
jane : jane sudo users
Für john entsprechend:
$ groups johnAusgabe:
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/johnBefehlsalias anlegen:
Cmnd_Alias UPDATE_AND_UPGRADE = /usr/bin/apt update, /usr/bin/apt upgradeZugriff ohne Passwortabfrage gewähren:
john ALL=(ALL) NOPASSWD: UPDATE_AND_UPGRADEOder Zugriff auf einen einzelnen Befehl:
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxEigene Regeln prüfen
Zum Benutzer john wechseln und Update/Upgrade-Befehle ohne Passwortabfrage ausführen:
$ sudo apt update
$ sudo apt upgradeAndere 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/sudogroupPasswortversuche begrenzen
Defaults:%sudo passwd_tries=1Diese 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=1Passwort jedes Mal abfragen
Defaults:%sudo timestamp_timeout=0Erklä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 nginxAusgabe:
sudo: 1 incorrect password attempt
Den Befehl erneut mit richtigem Passwort ausführen:
$ sudo apt install nginxDa 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 - linuxuserEigene Sudoers-Konfiguration löschen
$ sudo rm /etc/sudoers.d/johnWarnung: 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 sudoBeispielausgabe des Systems:
info: Removing user `john' from group `sudo' ...
Entfernung überprüfen
$ groups johnBeispielausgabe:
john : john users
Zu john wechseln und sudo testen:
$ sudo apt updateErwartete 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) ALLDiese 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 joeEigene Sudoers-Datei erstellen
$ sudo visudo -f /etc/sudoers.d/joeVollen Zugriff für joe eintragen:
joe ALL=(ALL) ALLGruppenzugehörigkeit prüfen
$ groups joeAusgabe:
joe : joe users
Wechseln und testen
$ sudo su - joeNun testen:
$ sudo whoamiErwartete 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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.