Konfigurieren von Superuser-Rechten mit sudo
- WAS?
Machen Sie sich mit den Grundlagen der
sudo
-Konfiguration vertraut und lernen Sie, wie Sie Superuser-Rechte mitsudo
delegieren.- WARUM?
Für bestimmte Kommandos sind Administrator- oder
root
-Rechte erforderlich. Mitsudo
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 einersudo
-Konfiguration, die in der gesamten Umgebung funktioniert, dauert je nach Komplexität Ihrer Einrichtung wesentlich länger.- ZIEL
Grundlegende Aspekte der
sudo
-Konfiguration verstehen. Diesudo
-Konfiguration in gängigen Anwendungsfällen nutzen. Lernen Sie, wie Sie mit Benutzern, Benutzergruppen und Aliasnamen insudo
-Einrichtungen arbeiten. Machen Sie sich mit den bewährten Verfahren und der Fehlerbehebung vonsudo
vertraut.- ANFORDERUNGEN
Grundlegende Kenntnisse von
sudo
.root
-Rechte. Weitere Informationen zur Verwendung vonsudo
als normaler Benutzer finden Sie in https://documentation.suse.com/smart/systems-management/html/sudo-run-commands-as-superuser/index.html.Das Paket sudo muss installiert sein.
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 dasroot
-Passwort eingeben und zumroot
-Konto wechseln zu müssen.
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.
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 vonsudo
-Konfigurationsdateien verwenden Alle Änderungen an der
sudo
-Konfiguration sollten mit dem Kommandovisudo
vorgenommen werden.visudo
ist ein maßgeschneidertes Tool, mit dem Sie diesudo
-Konfigurationsdateien bearbeiten und grundlegende Syntaxprüfungen durchführen können, um sicherzustellen, dass die Konfiguration intakt und funktionsfähig bleibt. Eine fehlerhaftesudo
-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 vonsudo
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 vor10_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.
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.
Erstellen Sie als Systemadministrator (
root
) eine benutzerdefinierte Konfigurationsdatei, in die die neuen benutzerspezifischen Direktiven aufgenommen werden sollen. Starten Sie hierzuvisudo
. Verwenden Sie sowohl eine Nummerierung als auch einen beschreibenden Namen:#
visudo -f /etc/sudoers.d/02_usermanagement
Erstellen Sie eine Regel, mit der
tux
die Binärdatei/usr/sbin/useradd
in der gesamten Umgebung ausführen kann, für die diesesudo
-Konfiguration gilt:tux1 ALL2 = /usr/sbin/useradd3
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!
.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.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.
-
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 desroot
-Passworts nur sein eigenes Passwort einzugeben.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.
Zum Bearbeiten der Beispielkonfiguration öffnen Sie sie als Systemadministrator mit
visudo
:#
visudo /etc/sudoers.d/02_usermanagement
Fügen Sie der Regel zusätzliche Benutzer in einer durch Kommas getrennten Liste hinzu:
tux, wilber ALL = /usr/sbin/useradd
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
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 desroot
-Passworts nur das eigene Passwort einzugeben.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
).
Erstellen Sie eine neue Datei, die Ihre globalen Alias-Definitionen enthält:
#
visudo /etc/sudoers.d/01_aliases
Fügen Sie die folgende Zeile hinzu, um den
TEAMLEADERS
-Alias zu erstellen:User_Alias TEAMLEADERS = tux, wilber
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
Speichern Sie Ihre Änderungen und beenden Sie
visudo
.Starten Sie
visudo
als Systemadministrator und bearbeiten Sie die Beispielkonfigurationsdatei:#
visudo -f /etc/sudoers.d/02_usermanagement
Löschen Sie die vorherige Regel und ersetzen Sie sie durch die folgende Regel mit den oben definierten Aliasnamen:
TEAMLEADERS ALL = USERMANAGEMENT
Damit alle durch
User_Alias
definierten Benutzer ihr eigenes Passwort anstelle desroot
-Passworts verwenden können, fügen Sie die folgende Zeile hinzu:Defaults:TEAMLEADERS !targetpw
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.
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.
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.
sudo
-Passwortanforderungen #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.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, dasroot
-Passwort einzugeben.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 dasroot
-Passwort ein.sudo -i
startet die Shell als interative Login-Shell mit einer sauberen Umgebung. Zur Ausführung dieses Kommandos geben Sie dasroot
-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 desroot
-Kontos gehindert werden. Weitere Informationen hierzu finden Sie im Abschnitt 3, „Ändern der Zeitüberschreitung fürsudo
-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 mitvisudo -c
auch überprüfen, ob das gesamte Framework dersudo
-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 haltenDie 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 dediziertesudo
-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
Es gibt zwei Ausnahmen: | |
Entfernen Sie das Zeichen | |
Stellen Sie eine Liste der Umgebungsvariablen zusammen, die beibehalten werden sollen, wenn | |
Eine komplexe Regel, die besagt, dass der Benutzer |
-
targetpw
Bei diesem Flag fordert
sudo
zur Eingabe des in der Option-u
angegebenen Passworts auf (bzw. zur Eingabe desroot
-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 desroot
-Passworts auf. Die Standardeinstellung ist “OFF”.Defaults !rootpw # Turn rootpw flag OFF
-
env_reset
Bei dieser Einstellung erstellt
sudo
eine Mindestumgebung mitTERM
,PATH
,HOME
,MAIL
,SHELL
,LOGNAME
,USER
,USERNAME
undSUDO_*
. Zusätzlich werden Variablen, die inenv_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
-
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ürHost_List
.-
NOPASSWD:|PASSWD:
Der Benutzer wird nicht aufgefordert, ein Passwort einzugeben, wenn Kommandos ausgeführt werden, die
Cmd_List
nachNOPASSWD:
: entsprechen.PASSWD:
ist die Standardeinstellung. Es muss nur angegeben werden, wenn sich sowohlPASSWD:
als auchNOPASSWD:
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
Die drei Server sind unter einem einzelnen Host_Alias | |
Ähnlich wie bei den gruppierten Hosts oben werden hier Gruppenbenutzer oder ganze Gruppen von Benutzern (wie | |
Gibt eine Gruppe von Kommandos an, die im selben Kontext verwendet werden. | |
Alle Aliase werden zu einer einzigen Regel zusammengefasst, nach der alle mit dem |
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.
8 Rechtliche Hinweise #
Copyright © 2006–2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.