Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Konfigurieren von Superuser-Rechten mit sudo

Konfigurieren von Superuser-Rechten mit sudo

Veröffentlicht: 12.12.2024
WAS?

Machen Sie sich mit den Grundlagen der sudo-Konfiguration vertraut und lernen Sie, wie Sie Superuser-Rechte mit sudo delegieren.

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 Systemumgebung 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.

sudo unterstützt Sie dabei. Ihre Vorteile:

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.

Wichtig
Wichtig: Wichtiger Hinweis zu diesem Artikel

Dieser Artikel bietet eingehende Informationen zur sudo-Konfiguration. Es gibt jedoch keine Ratschläge, wie Sie eine umfassende und sichere sudo-Richtlinie erstellen können. Sicherheitsbezogene Richtlinien sind sehr komplex und hängen stark von der Umgebung ab, für die sie erstellt werden.

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.

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:

Immer visudo für die Bearbeitung von sudo-Konfigurationsdateien verwenden

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 unter /etc/sudoers.d/ 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 /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.

Tipp
Tipp: sudo-Konfiguration und unveränderliche Dateisysteme

Ein unveränderliches Dateisystem ist ein Dateisystem, das nicht mehr verändert werden kann, sobald es installiert wurde. Der Zugriff darauf ist schreibgeschützt. Wenn das von Ihnen verwendete SUSE-Produkt auf einem unveränderlichen Dateisystem basiert, wird die mit dem Produkt ausgelieferte sudo-Standardkonfiguration unter /usr/etc/sudoers installiert und alle vorkonfigurierten Anpassungen befinden sich unter /usr/etc/sudoers.d/.

Ihre eigenen benutzerdefinierte Konfigurationen befinden sich unter /etc/sudoers.d/ und haben Vorrang vor allem, was unter /usr/etc/sudoers.d/ zur Verfügung steht. Mit dem Kommando visudo wird /usr/etc/sudoers geöffnet und die geänderte Datei unter /etc/sudoers gespeichert, wenn es vorher keine sudoers-Datei gab. Wenn es bereits eine gab, öffnet visudo diese und schreibt sie. Die Instanz, die sich unter /etc/ befindet, hat Vorrang vor der Instanz, die sich unter /usr/etc/ befindet. Auf diese Weise werden die vom Benutzer vorgenommenen Konfigurationsanpassungen bei Aktualisierungen nicht zerstört.

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. Damit der Benutzer sein eigenes Passwort anstelle des root-Passworts verwenden kann, fügen Sie die folgende Zeile hinzu:

    Defaults:tux !targetpw

    Wenn dieses Flag aktiv ist, muss der Benutzer das Passwort des Zielbenutzers eingeben, also root. Dieses Flag ist standardmäßig auf allen SLE Micro-Systemen aktiviert. Negieren Sie es mit !, um den Benutzer aufzufordern, statt des root-Passworts nur sein eigenes Passwort einzugeben.

  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.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. Damit die aufgeführten Benutzer ihr eigenes Passwort anstelle des root-Passworts verwenden können, fügen Sie die folgende Zeile hinzu:

    Defaults:tux, wilber !targetpw

    Wenn diese Flagge aktiv ist, müssen die aufgeführten Benutzer das Passwort des Zielbenutzers eingeben, also root. Dieses Flag ist standardmäßig auf allen SLE Micro-Systemen aktiviert. Negieren Sie es mit !, um die aufgeführten Benutzer aufzufordern, statt des root-Passworts nur das eigene Passwort einzugeben.

  5. 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, anstatt alle separaten benutzerdefinierten Konfigurationsdateien zu durchsuchen. 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. Damit alle durch User_Alias definierten Benutzer ihr eigenes Passwort anstelle des root-Passworts verwenden können, fügen Sie die folgende Zeile hinzu:

    Defaults:TEAMLEADERS !targetpw
  8. 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.

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:

    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.

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 # exit
tux:~ > 

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:~ # exit
tux:~ > 

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.

Benutzerdefinierte sudo-Konfigurationen in separaten Dateien speichern

Die Hauptkonfigurationsdatei mit den Richtlinien für sudo ist /etc/sudoers. Diese Datei wird in den Systempaketen zur Verfügung gestellt, und Änderungen an ihr können zu Problemen bei Aktualisierungen führen. Erstellen Sie daher separate Konfigurationsdateien für Ihre benutzerdefinierten Einstellungen im Verzeichnis /etc/sudoers.d/. Diese werden standardmäßig von einer Direktive in /etc/sudoers abgerufen.

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 im Abschnitt 3, „Ändern der Zeitüberschreitung für sudo-Passwortanforderungen“.

Kommando visudo nutzen

Mit dem Kommando visudo können Sie die Datei /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 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 SLE Micro.

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
targetpw

Bei diesem Flag fordert sudo zur Eingabe des in der Option -u angegebenen Passworts auf (bzw. zur Eingabe des root-Passworts, wenn -u nicht verwendet wird). Standardmäßig ist ON festgelegt.

Defaults targetpw # Turn targetpw flag ON
rootpw

Bei diesem Flag fordert sudo zur Eingabe des root-Passworts auf. Die Standardeinstellung ist “OFF”.

Defaults !rootpw # Turn rootpw flag OFF
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.