documentation.suse.com / Konfigurieren von Superuser-Rechten mit sudo
SUSE Linux Micro 6.2

Konfigurieren von Superuser-Rechten mit sudo

Veröffentlicht: 04.11.2025
WAS?

Machen Sie sich mit den Grundlagen der sudo-Konfiguration vertraut und lernen Sie, wie Sie Superuser-Rechte mit sudo delegieren. Dieser Artikel bietet ausführliche sudo-Konfigurationsinformationen und keine Ratschläge zum Aufbau einer umfassenden und sicheren sudo-Richtlinie. Sicherheitsbezogene Richtlinien sind sehr komplex und hängen stark von der Umgebung ab, für die sie erstellt werden.

WARUM?

Für bestimmte Kommandos sind Administrator- oder root-Rechte erforderlich. Mit sudo können Sie die Rechte für die Ausführung dieser Kommandos an bestimmte Benutzer oder Gruppen delegieren.

AUFWAND

Es dauert bis zu 20 Minuten, diesen Artikel zu lesen. Für das Schreiben Ihrer ersten sudo-Konfigurationsregel brauchen Sie nur wenige Minuten, doch der Aufbau einer sudo-Konfiguration, die in der gesamten Umgebung funktioniert, dauert je nach Komplexität Ihrer Einrichtung wesentlich länger.

ZIEL

Grundlegende Aspekte der sudo-Konfiguration verstehen. Die sudo-Konfiguration in gängigen Anwendungsfällen nutzen. Lernen Sie, wie Sie mit Benutzern, Benutzergruppen und Aliasnamen in sudo-Einrichtungen arbeiten. Machen Sie sich mit den bewährten Verfahren und der Fehlerbehebung von sudo vertraut.

ANFORDERUNGEN

1 Einführung in die sudo-Konfiguration

sudo bietet eine Möglichkeit, Superuser-Rechte sicher und effizient an bestimmte Benutzer oder Gruppen zu delegieren.

Für bestimmte Vorgänge auf einem Linux-System sind root- oder Administratorrechte erforderlich. Home-Office-Benutzer, die ihr eigenes System verwalten, müssen keine Superuser-Rechte delegieren, da der Administrator und der normale Benutzer in diesem Szenario ein und dieselbe Person sind. Aber sobald ein System Teil einer größeren Umgebung mit mehreren Benutzern, Gruppen und Hosts ist, ist es unerlässlich, die Kontrolle darüber zu behalten, wer was und wo tun darf. Gleichzeitig ist es wichtig, alle Benutzer und Gruppen mit den notwendigen Rechten auszustatten, damit sie ihre Aufgaben erfüllen können.

Wichtig
Wichtig

In der neuen im sudo-policy-wheel-auth-self-Paket implementierten Richtlinie wird die Gruppe wheel verwendet, um zu verfolgen, ob ein Benutzer ein root mit dem Benutzerpasswort werden kann. Der erste vom Agama-Installationsprogramm erstellte Benutzer wird der wheel-Gruppe hinzugefügt.

Zudem, beim Ausführen des Kommandos sudo:

  • Wenn Sie Teil der wheel-Gruppe sind, werden Sie aufgefordert, Ihr Benutzerpasswort einzugeben.

  • Wenn Sie nicht Teil der wheel-Gruppe sind, werden Sie aufgefordert, das root-Passwort einzugeben.

sudo bietet:

Verbesserte Systemsicherheit

sudo bietet eine fein abgestufte Kontrolle über Benutzer, Gruppen, Hosts und Kommandos. Dadurch wird die Systemsicherheit erhöht, denn das Risiko einer böswilligen oder versehentlichen Beschädigung durch einen Eindringling oder einen Systembenutzer wird reduziert.

Komplettes Audit-Protokoll

Wann immer ein Benutzer seine Rechte wechselt, erscheint dies im Systemprotokoll. Alle Vorgänge, die von diesem Benutzer mit erhöhten Rechten ausgeführt werden, können auf ihn zurückgeführt werden.

Möglichkeit zur Delegierung root-spezifischer Aufgaben

Mit sudo können Systemadministratoren einzelnen Benutzern oder Gruppen die Möglichkeit geben, bestimmte Aufgaben auszuführen, ohne das root-Passwort eingeben und zum root-Konto wechseln zu müssen.

2 Erstellung von benutzerdefinierten sudo-Konfigurationen

Lernen Sie, wie Sie eine einfache benutzerdefinierte sudo-Konfiguration erstellen und diese Schritt für Schritt erweitern können. Erstellen Sie Gruppen und verwenden Sie Aliasnamen, um Ihre benutzerdefinierte Konfiguration schlank und effizient zu halten.

Wichtig
Wichtig

Bei der Migration von SUSE Linux Enterprise Server 15 ist die /etc/sudoers-Datei vorhanden. Die /usr/etc/sudoers-Datei wird ignoriert, wenn die /etc/sudoers-Datei vorhanden ist. Solange der Benutzer keine wesentlichen Änderungen an der /etc/sudoers-Datei vorgenommen hat, wird die Konfiguration weiterhin aus dem /etc/sudoers.d/-Verzeichnis gelesen.

Bei der Migration von SUSE Linux Enterprise Server 15 wird empfohlen, dass Benutzer, die die /etc/sudoers-Datei nicht bearbeitet haben, diese entfernen. Wenn ein Benutzer die /etc/sudoers-Datei geändert hat, verschieben Sie die geänderte Datei in das /etc/sudoers.d-Verzeichnis und entfernen Sie dieses dann.

Warnung
Warnung: Beispielkonfigurationen dienen ausschließlich zur Veranschaulichung

Die unten dargelegten Beispielregeln dienen ausschließlich zur Veranschaulichung. Hiermit soll die allgemeine Syntax der sudo-Konfigurationsdateien erläutert werden. Verwenden Sie diese Regeln nicht im realen Einsatz, da sie der Komplexität dieser Umgebungen nicht gerecht werden.

2.1 Bewährte Verfahren für die sudo-Konfiguration

Machen Sie sich zunächst mit einigen grundlegenden Regeln für die Verwaltung von sudo-Konfigurationen vertraut:

Verwenden Sie immer das visudo -f-Kommando zum Bearbeiten des /etc/sudoers.d/-Verzeichnisses

Alle Änderungen an der sudo-Konfiguration sollten mit dem Kommando visudo vorgenommen werden. visudo ist ein maßgeschneidertes Tool, mit dem Sie die sudo-Konfigurationsdateien bearbeiten und grundlegende Syntaxprüfungen durchführen können, um sicherzustellen, dass die Konfiguration intakt und funktionsfähig bleibt. Eine fehlerhafte sudo-Konfiguration kann dazu führen, dass ein Benutzer aus dem eigenen System ausgesperrt wird.

Immer benutzerdefinierte Konfigurationen unter /etc/sudoers.d/ erstellen

Benutzerdefinierte Konfigurationen müssen im /etc/sudoers.d/-Verzeichnis abgelegt werden, damit sie von sudo abgerufen werden können. Die Einstellungen in den benutzerdefinierten Konfigurationen haben Vorrang vor den Einstellungen in der Standardkonfiguration unter /usr/etc/sudoers.

Immer die Reihenfolge beachten, in der die Konfigurationen ausgelesen werden

Damit die benutzerdefinierten Konfigurationen in der richtigen Reihenfolge ausgelesen werden, stellen Sie ihnen eine Zahl voran. Verwenden Sie bei Bedarf auch führende Nullen. So wird 01_myfirstconfig beispielsweise vor 10_myotherconfig analysiert. Wenn eine Direktive in einer Datei festgelegt wurde, die vor einer anderen Datei mit dazu widersprüchlichen Informationen gelesen wird, wird die zuletzt gelesene Direktive angewendet.

Immer beschreibende Dateinamen verwenden

Legen Sie Dateinamen fest, aus denen Sie schließen können, was die Konfigurationsdatei bewirkt. So können Sie leichter nachverfolgen, was das sudo-Setup bezwecken soll.

2.2 Erstellen einer benutzerspezifischen Konfigurationsdatei

Erstellen Sie eine sudo-Konfigurationsdatei, mit der ein normaler Benutzer (tux) das Kommando useradd mit seinem eigenen Passwort statt mit dem root-Passwort ausführen kann.

Beispiel 1: Erstellen einer benutzerspezifischen Konfigurationsdatei
  1. Erstellen Sie als Systemadministrator (root) eine benutzerdefinierte Konfigurationsdatei, in die die neuen benutzerspezifischen Direktiven aufgenommen werden sollen. Starten Sie hierzu visudo. Verwenden Sie sowohl eine Nummerierung als auch einen beschreibenden Namen:

    # visudo -f /etc/sudoers.d/02_usermanagement
  2. Erstellen Sie eine Regel, mit der tux die Binärdatei /usr/sbin/useradd in der gesamten Umgebung ausführen kann, für die diese sudo-Konfiguration gilt:

    tux1 ALL2 = /usr/sbin/useradd3

    1

    Legen Sie den Benutzer oder die Gruppe fest. Listen Sie Benutzer nach Namen oder #UID und Gruppen nach %GROUPNAME auf. Wenn Sie mehrere Elemente eintragen, trennen Sie sie durch Kommas voneinander. Sollen Einträge negiert werden, verwenden Sie !.

    2

    Geben Sie einen oder mehrere (durch Komma getrennte) Hosts an. Verwenden Sie (vollqualifizierte) Hostnamen oder IP-Adressen. Mit ALL wird diese Einstellung global auf allen Hosts erzwungen. Eine Negierung geben Sie mit ! an.

    3

    Geben Sie eine oder mehrere (durch Komma getrennte) ausführbare Dateien an. Beachten Sie dabei die folgenden Regeln:

    /usr/sbin/useradd

    Werden keine zusätzlichen Optionen angegeben, kann jedes mögliche useradd-Kommando ausgeführt werden.

    /usr/sbin/useradd -c

    Wenn Sie explizit eine Option angeben, ist ausschließlich diese Option zulässig. Andere Optionen stehen dem oben angegebenen Benutzer dann nicht zur Verfügung.

    /usr/sbin/useradd ""

    Damit kann der Benutzer lediglich useradd ohne jegliche Optionen aufrufen.

    Im obigen Beispiel würden Sie entweder alle Optionen und Unterkommandos zulassen oder sie aus Sicherheitsgründen auf einige wenige beschränken wollen. Einem Benutzer zu verbieten, überhaupt eine Option anzugeben, wäre in diesem Zusammenhang jedoch sinnlos.

  3. Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von sudo beachtet wird.

2.3 Erstellen von benutzerdefinierten Konfigurationen durch Gruppieren von Elementen

Bearbeiten Sie die Konfiguration aus Beispiel 1, „Erstellen einer benutzerspezifischen Konfigurationsdatei“, damit eine Gruppe benannter Benutzer das Kommando useradd ausführen kann, ohne das root-Passwort eingeben zu müssen. Fügen Sie außerdem das usermod und userdel zur Liste der Kommandos hinzu, die dieser Gruppe zur Verfügung stehen.

Beispiel 2: Erstellen von benutzerdefinierten Konfigurationen durch Gruppieren von Elementen
  1. Zum Bearbeiten der Beispielkonfiguration öffnen Sie sie als Systemadministrator mit visudo:

    # visudo /etc/sudoers.d/02_usermanagement
  2. Fügen Sie der Regel zusätzliche Benutzer in einer durch Kommas getrennten Liste hinzu:

    tux, wilber ALL = /usr/sbin/useradd
  3. Damit die angegebenen Benutzer eine Liste von Kommandos ausführen können, geben Sie die Kommandos als durch Kommas getrennte Liste an:

    tux, wilber ALL = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
  4. Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von sudo beachtet wird.

2.4 Vereinfachen der Konfigurationen mithilfe von Aliasen

Mithilfe von Aliasen können Sie die benutzerdefinierte Konfiguration aus Beispiel 2, „Erstellen von benutzerdefinierten Konfigurationen durch Gruppieren von Elementen“ noch weiter vereinfachen. Die Gruppierung von Elementen ist bis zu einem gewissen Grad hilfreich, aber die Verwendung globaler Aliasnamen für Benutzer, Kommandos und Hosts ist der effizienteste Weg, um eine übersichtliche und schlanke sudo-Konfiguration zu erhalten.

Es ist viel besser, Aliasnamen und Gruppen anstelle von Listen zu verwenden, um Änderungen in Ihrer Einrichtung zu berücksichtigen. Sollte ein Benutzer ausscheiden, entfernen Sie ihn einfach aus der globalen User_Alias-Deklaration in Ihrer Alias-Deklarationsdatei, statt alle separaten benutzerdefinierten Konfigurationsdateien zu überprüfen. Das gleiche Verfahren gilt für alle anderen Arten von Aliasnamen (Host_Alias, Cmnd_Alias und Runas_Alias).

Beispiel 3: Vereinfachen der Konfigurationen mithilfe von Aliasen
  1. Erstellen Sie eine neue Datei, die Ihre globalen Alias-Definitionen enthält:

    # visudo /etc/sudoers.d/01_aliases
  2. Fügen Sie die folgende Zeile hinzu, um den TEAMLEADERS-Alias zu erstellen:

    User_Alias    TEAMLEADERS = tux, wilber
  3. Fügen Sie die folgende Zeile hinzu, um den USERMANAGEMENT-Alias zu erstellen:

    Cmnd_Alias    USERMANAGEMENT = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel
  4. Speichern Sie Ihre Änderungen und beenden Sie visudo.

  5. Starten Sie visudo als Systemadministrator und bearbeiten Sie die Beispielkonfigurationsdatei:

    # visudo -f /etc/sudoers.d/02_usermanagement
  6. Löschen Sie die vorherige Regel und ersetzen Sie sie durch die folgende Regel mit den oben definierten Aliasnamen:

    TEAMLEADERS ALL = USERMANAGEMENT
  7. Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von sudo beachtet wird.

Anmerkung
Anmerkung: Weitere Informationen

Eine ausführlichere Beschreibung der sudo-Konfigurationssyntax finden Sie in Abschnitt 7, „sudo-Konfigurationsreferenz“ und in der Manpage von sudo.

3 Ändern der Zeitüberschreitung für sudo-Passwortanforderungen

Hier erfahren Sie, wie Sie die Zeitüberschreitungseinstellungen für die Ausführung von Kommandos ändern, für die root-Rechte erforderlich sind, ohne bei jedem Kommando zur Eingabe des root-Passworts aufgefordert zu werden.

Wenn Sie zum ersten Mal ein Kommando ausführen, dem sudo vorangestellt ist, werden Sie aufgefordert, das root-Passwort einzugeben. Dieses Passwort ist für eine bestimmte Zeitspanne gültig. Sobald es abgelaufen ist, wird der Benutzer erneut nach dem Passwort gefragt. Zur Verlängerung oder Verkürzung der Zeitüberschreitung bei der Ausführung von Kommandos, für die root-Rechte erforderlich sind, nehmen Sie die folgenden Änderungen an Ihrer sudo-Konfigurationsdatei vor. Es ist wichtig zu wissen, dass die Anforderung des root-Passworts für Benutzer vorgesehen ist, die nicht Teil der wheel-Gruppe sind.

Warnung
Warnung: Keinen unbegrenzten passwortlosen Zugriff auf root-Rechte erteilen

Erteilen Sie aus Sicherheitsgründen keinen unbegrenzten Zugriff auf die root-Rechte. Legen Sie stattdessen eine angemessene Zeitüberschreitung fest, damit etwaige Eindringlinge am Missbrauch des root-Kontos gehindert werden.

Vorgehen 1: Ändern der Zeitüberschreitung für sudo-Passwortanforderungen
  1. Erstellen Sie als Systemadministrator eine neue sudo-Konfigurationsdatei für die Zeitstempelkonfiguration:

    # visudo --f=/etc/sudoers.d/timestamp_timeout

    Nach der erfolgreichen Authentifizierung mit dem root-Passwort wird die Datei geöffnet.

  2. Aktivieren Sie die Bearbeitung und fügen Sie die Zeile timestamp_timeout= hinzu. Geben Sie einen Wert für den Zeitstempel ein.

    Soll die Zeitüberschreitung beispielsweise auf drei Minuten verkürzt werden, geben Sie Folgendes ein:

    Defaults timestamp_timeout=3

    Ist der Zeitstempel auf null gesetzt, werden Sie bei jeder Ausführung eines sudo-Kommandos aufgefordert, das root-Passwort einzugeben.

  3. Speichern Sie die Änderungen und schließen Sie die Datei.

Sie haben eine sudo-Konfigurationsdatei erstellt und die Einstellung für die Zeitüberschreitung bei der Ausführung von sudo-Kommandos verkürzt.

4 Starten einer Shell mit root-Rechten

Mit dem Kommando sudo -s oder sudo -i starten Sie eine Shell mit dauerhaften root-Rechten. Bei beiden Kommandos werden Sie nur einmal nach dem root-Passwort gefragt. Es ist wichtig zu wissen, dass Benutzer, die Teil der wheel-Gruppe sind, nach ihrem eigenen Passwort gefragt werden. Andernfalls werden sie nach dem root-Passwort gefragt.

4.1 Unterschied zwischen sudo -s und sudo -i

Auf Dauer kann es recht mühsam sein, jedes Mal sudo eingeben zu müssen, wenn Sie ein Kommando als root ausführen möchten. Stattdessen können Sie mit einem der integrierten Mechanismen eine Shell mit dauerhaften root-Rechten starten. Hierzu stehen zwei Kommandooptionen zur Verfügung:

  • sudo -s startet die Shell mit der Umgebung des aktuellen Benutzers und bietet ein paar Maßnahmen zur Kontrolle der Rechte. Zur Ausführung dieses Kommandos geben Sie das root-Passwort ein.

  • sudo -i startet die Shell als interative Login-Shell mit einer sauberen Umgebung. Zur Ausführung dieses Kommandos geben Sie das root-Passwort ein.

Bei beiden Kommandos wird die Shell mit einer neuen Umgebung gestartet, und Sie sind als root angemeldet. Alle nachfolgenden Kommandos, die Sie in dieser Shell ausführen, werden mit erhöhten Rechten ausgeführt, ohne dass Sie das Passwort erneut eingeben müssen. Diese Umgebung wird beendet, wenn Sie die Shell schließen. Für ein weiteres sudo-Kommando müssen Sie das Passwort erneut eingeben.

4.2 Starten einer Shell mit sudo -s

Das Kommando sudo -s startet eine interaktive Nicht-Login-Shell. Nach der erfolgreichen Authentifizierung mit dem root-Passwort werden alle nachfolgenden Kommandos mit erhöhten Rechten ausgeführt.

Die Umgebungsvariable SHELL oder die Standard-Shell des Benutzers bestimmt, welche Shell geöffnet wird. Ist diese Variable leer, wird die in /etc/passwd definierte Shell übernommen.

Standardmäßig wird das Kommando sudo -s aus dem Verzeichnis des vorherigen Benutzers heraus ausgeführt, da der Zielbenutzer die Umgebung des vorherigen Benutzers erbt. Das Kommando wird außerdem in Ihrem Verlauf protokolliert.

Mit dem folgenden Kommando starten Sie eine Shell mit dauerhaft erhöhten Rechten:

tux:~ > sudo -s
[sudo] password for root:
root:/home/tux # exittux:~ > 

Die Eingabeaufforderung wird von > zu # geändert.

Sie haben eine Shell mit dauerhaft erhöhten Rechten gestartet. Alle nachfolgenden Kommandos werden ausgeführt, ohne dass das Passwort erneut abgefragt wird.

4.3 Starten einer Shell mit sudo -i

Das Kommando sudo -i verhält sich ähnlich wie die Kommandozeilenoption sudo -s, startet jedoch eine interaktive Login-Shell. Beim Kommando sudo -s erbt der Zielbenutzer die Umgebung des vorherigen Benutzers. Sie können dies verhindern, indem Sie das sudo -i-Kommando verwenden, bei dem der Zielbenutzer eine übersichtliche Umgebung erhält und im eigenen $HOME-Verzeichnis startet.

So führen Sie ein Kommando mit sudo -i aus:

tux:~ > sudo -i
[sudo] password for root:
root:~ # exittux:~ > 

Sie haben eine Shell mit dauerhaft höheren Rechten gestartet, und das Kommando wird in Ihrem Verlauf protokolliert. Alle nachfolgenden Kommandos werden ausgeführt, ohne dass das Passwort erneut abgefragt wird.

5 Bewährte Verfahren für sudo

Erfahren Sie mehr über die besten Methoden von sudo zur Kontrolle des Systemzugriffs, damit die Benutzer produktiv arbeiten können.

Testen und revidieren Sie Ihre sudo-Konfigurationen gründlich

Wenn Sie ein wirklich effizientes und sicheres sudo-Konfigurations-Framework aufbauen möchten, sollten Sie eine Routine für regelmäßige Tests und Revisionen einrichten. Finden Sie mögliche Schlupflöcher und beseitigen Sie sie. Lassen Sie die Sicherheit nicht zugunsten der Bequemlichkeit außer Acht.

Zeitüberschreitung für sudo begrenzen

Erteilen Sie aus Sicherheitsgründen keinen unbegrenzten Zugriff auf die root-Rechte. Legen Sie stattdessen eine angemessene Zeitüberschreitung fest, damit etwaige Eindringlinge am Missbrauch des root-Kontos gehindert werden. Weitere Informationen hierzu finden Sie in Abschnitt 3, „Ändern der Zeitüberschreitung für sudo-Passwortanforderungen“.

Kommando visudo nutzen

Mit dem Kommando visudo -f können Sie die Datei /usr/etc/sudoers auf sichere Weise bearbeiten, da dieses Kommando die Syntax der Datei prüft, bevor die Änderungen gespeichert werden. Damit beugen Sie möglichen Fehlern vor, die das System beschädigen könnten. Neben einer grundlegenden Syntaxprüfung können Sie mit dem Kommando visudo -c auch überprüfen, ob das gesamte Framework der sudo-Konfiguration in der richtigen Reihenfolge und ohne Fehler analysiert wurde.

Benutzer in Gruppen statt einzeln verwalten

Halten Sie die sudo-Konfiguration so schlank und überschaubar wie möglich. Verwalten Sie Benutzer, indem Sie sie zu Gruppen hinzufügen und dann Rechte an diese Gruppen statt an Einzelpersonen vergeben. Wenn Sie einen Benutzer hinzufügen oder entfernen möchten, können Sie dann einfach die Gruppeneinstellungen ändern; Sie müssen nicht die gesamte Konfiguration nach dem Benutzer durchsuchen.

Beispiel für eine Regel, mit der alle Benutzer in der Beispielgruppe %admingrp alle Kommandos ausführen können:

%admingrp ALL = (ALL) ALL
Pfad für Binärdateien begrenzen

Mit der Direktive secure_path können Sie die Bereiche begrenzen, in denen die Benutzer Kommandos ausführen können. Das folgende Beispiel ist die Standardeinstellung in SUSE Linux Enterprise Server.

Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin"
sudo-Protokollierung transparent halten

Die Einträge für sudo werden in der Standard-Protokolldatei festgehalten, in der diese Protokolleinträge leicht übersehen werden können. Fügen Sie die folgende Regel in die Konfiguration ein und legen Sie eine dedizierte sudo-Protokolldatei fest.

Defaults logfile=/var/log/sudo.log

6 Fehlersuche

Lernen Sie, wie Sie Probleme bei der sudo-Konfiguration erkennen und beheben können.

6.1 Benutzerdefinierte Konfigurationen unter /etc/sudoers.d/ werden ignoriert

Die Direktive #includedir in /etc/sudoers ignoriert Dateien, die auf das Zeichen ~ enden oder das Zeichen . enthalten. Damit sollen Probleme mit Konfigurationsdateien, die durch den Paket-Manager bereitgestellt werden (enthalten das Zeichen .), oder mit temporären Dateien oder Sicherungsdateien eines Editors (enden auf ~) vermieden werden. Achten Sie darauf, dass die Namen Ihrer benutzerdefinierten Konfigurationsdateien weder diese Zeichen enthalten noch auf diese Zeichen enden. Andernfalls benennen Sie sie um.

6.2 Konflikt mit benutzerdefinierten Direktiven

Die Reihenfolge, in der die Konfigurationsdateien gelesen werden, legt den Zeitpunkt fest, zu dem eine sudo-Konfigurationsdirektive angewendet wird. Direktiven in einer Datei, die sich unter /etc/sudoers.d/ befindet, haben Vorrang vor denselben Direktiven in /etc/sudoers. Wenn die in /etc/sudoers.d/ angegebenen benutzerdefinierten Direktiven nicht funktionieren, prüfen Sie mit visudo -c die Reihenfolge, in der die Dateien gelesen werden. Passen Sie die Reihenfolge bei Bedarf an.

6.3 Ausgesperrt wegen einer beschädigten sudo-Konfiguration

Wenn Sie versehentlich die sudo-Konfiguration Ihres Systems beschädigt und sich aus sudo ausgesperrt haben, verwenden Sie su - und das root-Passwort, um eine Root-Shell zu starten. Führen Sie visudo -c aus, um nach Fehlern zu suchen und beheben Sie diese mit visudo.

7 sudo-Konfigurationsreferenz

Dieser Abschnitt enthält eine grundlegende Anleitung zur sudo-Konfiguration, die Ihnen hilft, sowohl Standard- als auch benutzerdefinierte sudo-Konfigurationen zu verstehen und zu pflegen.

7.1 sudoers-Konfigurationssyntax

Die sudoers-Konfigurationsdateien enthalten zwei Optionstypen: Zeichenketten und Flags. Zeichenketten können beliebige Werte enthalten, Flags hingegen können nur aktiviert (ON) oder deaktiviert (OFF) werden. Die wichtigsten Syntaxkonstrukte für sudoers-Konfigurationsdateien sind:

# Everything on a line after # is ignored1
Defaults !insults # Disable the insults flag2
Defaults env_keep += "DISPLAY HOME" # Add DISPLAY and HOME to env_keep3
tux ALL = NOPASSWD: /usr/bin/frobnicate, PASSWD: /usr/bin/journalctl4

1

Es gibt zwei Ausnahmen: #include und #includedir sind normale Kommandos. In der aktuellen Version wird # nicht mehr verwendet. Den include-Direktiven ist stattdessen nun @ vorangestellt. Die #-Notation wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt.

2

Entfernen Sie das Zeichen !, um das gewünschte Flag zu aktivieren (ON).

3

Stellen Sie eine Liste der Umgebungsvariablen zusammen, die beibehalten werden sollen, wenn env_reset aktiviert wird.

4

Eine komplexe Regel, die besagt, dass der Benutzer tux ein Passwort benötigt, um /usr/bin/journalctl auszuführen, aber keins benötigt, um /usr/bin/frobnicate auf allen Hosts auszuführen.

Hilfreiche Flags und Optionen
env_reset

Bei dieser Einstellung erstellt sudo eine Mindestumgebung mit TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME und SUDO_*. Zusätzlich werden Variablen, die in env_keep aufgelistet sind, aus der aufrufenden Umgebung importiert. Standardmäßig ist ON festgelegt.

Defaults env_reset # Turn env_reset flag ON
env_keep

Die Liste der Umgebungsvariablen, die beizubehalten sind, wenn für das Flag env_reset ON festgelegt ist.

# Set env_keep to contain EDITOR and PROMPT
Defaults env_keep = "EDITOR PROMPT"
Defaults env_keep += "JRE_HOME" # Add JRE_HOME
Defaults env_keep -= "JRE_HOME" # Remove JRE_HOME
env_delete

Die Liste der Umgebungsvariablen, die zu löschen sind, wenn für das Flag env_reset OFF festgelegt ist.

# Set env_delete to contain EDITOR and PROMPT
Defaults env_delete = "EDITOR PROMPT"
Defaults env_delete += "JRE_HOME" # Add JRE_HOME
Defaults env_delete -= "JRE_HOME" # Remove JRE_HOME

7.2 Grundlegende sudoers-Regeln

Jede Regel befolgt folgendes Schema ([] markiert optionale Teile):

#Who      Where         As whom      Tag                What
User_List Host_List = [(User_List)] [NOPASSWD:|PASSWD:] Cmnd_List
sudoers-Regelsyntax
User_List

Eine oder mehrere Kennungen (durch Komma getrennt): Entweder ein Benutzername, eine Gruppe im Format %GROUPNAME oder eine Benutzer-ID im Format #UID. Eine Negierung wird mit dem Präfix ! angegeben.

Host_List

Eine oder mehrere Kennungen (durch Komma getrennt): Entweder ein (vollständig qualifizierter) Hostname oder eine IP-Adresse. Eine Negierung wird mit dem Präfix ! angegeben. ALL ist eine häufige Wahl für Host_List.

NOPASSWD:|PASSWD:

Der Benutzer wird nicht aufgefordert, ein Passwort einzugeben, wenn Kommandos ausgeführt werden, die Cmd_List nach NOPASSWD: : entsprechen.

PASSWD: ist die Standardeinstellung. Es muss nur angegeben werden, wenn sich sowohl PASSWD: als auch NOPASSWD: in derselben Zeile befinden:

tux ALL = PASSWD: /usr/bin/foo, NOPASSWD: /usr/bin/bar
Cmnd_List

Einen oder mehrere Bezeichner (durch Komma getrennt): Ein Pfad zu einer ausführbaren Datei, gefolgt von einem optionalen zulässigen Argument.

/usr/bin/foo     # Anything allowed
/usr/bin/foo bar # Only "/usr/bin/foo bar" allowed
/usr/bin/foo ""  # No arguments allowed

ALL kann als User_List, Host_List und Cmnd_List verwendet werden.

7.3 sudoers mithilfe von Aliasen vereinfachen

Administratoren können vermeiden, dass sie eine Reihe von sich wiederholenden und individuellen Regeln pflegen müssen, indem sie Aliasnamen für Gruppenobjekte einführen. Für die Aliase gilt dieselbe Syntax wie für die Regeln. Die folgenden Aliastypen werden unterstützt:

User_Alias

Eine Liste mit Benutzernamen

Runas_Alias

Eine Gruppe mit Benutzern nach UID

Host_Alias

Eine Liste mit Hostnamen

Cmnd_Alias

Eine Liste von Kommandos und Verzeichnissen sowie Aliasnamen

Stellen Sie sich Aliasnamen als benannte Listen von Benutzern, Gruppen, Kommandos und Hosts vor. Dieses Beispiel veranschaulicht, welche Möglichkeiten die Aliase eröffnen:

Host_Alias    WEBSERVERS = www1, www2, www31
User_Alias    ADMINS = tux, wilber, suzanne2
Cmnd_Alias    REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff3
ADMINS WEBSERVERS = REBOOT4

1

Die drei Server sind unter einem einzelnen Host_Alias WEBSERVERS gruppiert. Sie können (vollqualifizierte) Hostnamen oder IP-Adressen verwenden.

2

Ähnlich wie bei den gruppierten Hosts oben werden hier Gruppenbenutzer oder ganze Gruppen von Benutzern (wie %wheel) aufgeführt. Eine Negierung wird wie gewohnt mit dem Präfix ! angegeben.

3

Gibt eine Gruppe von Kommandos an, die im selben Kontext verwendet werden.

4

Alle Aliase werden zu einer einzigen Regel zusammengefasst, nach der alle mit dem User_Alias angegebenen Benutzer die Gruppe der unter Cmnd_Alias festgelegten Kommandos auf allen in Host_Alias genannten Hosts ausführen können.

Zusammenfassend lässt sich sagen, dass Aliase Administratoren dabei helfen, sudoers schlank und überschaubar (und damit sicher) zu halten. Wenn beispielsweise einer der Benutzer das Unternehmen verlassen hat, können Sie den Namen dieser Person aus der User_Alias-Anweisung und allen Systemgruppen, zu denen sie gehörte, einmalig löschen, anstatt nach allen Regeln zu suchen, die diesen bestimmten Benutzer enthalten.