Konfigurieren von Superuser-Rechten mit sudo
- WAS?
Machen Sie sich mit den Grundlagen der
sudo-Konfiguration vertraut und lernen Sie, wie Sie Superuser-Rechte mitsudodelegieren. Dieser Artikel bietet ausführlichesudo-Konfigurationsinformationen und keine Ratschläge zum Aufbau einer umfassenden und sicherensudo-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. Mitsudokö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 vonsudovertraut.- ANFORDERUNGEN
Grundlegende Kenntnisse von
sudo.root-Rechte. Weitere Informationen zur Verwendung vonsudoals normaler Benutzer finden Sie in https://documentation.suse.com/smart/systems-management/html/sudo-run-commands-as-superuser/index.html.
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.
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, dasroot-Passwort einzugeben.
sudo bietet:
- Verbesserte Systemsicherheit
sudobietet 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
sudokö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.
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.
Bei der Migration von SUSE Linux Enterprise Server für SAP-Anwendungen 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 für SAP-Anwendungen 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.
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 Kommandovisudovorgenommen werden.visudoist 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 im
/etc/sudoers.d/-Verzeichnis abgelegt werden, damit sie vonsudoabgerufen 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_myfirstconfigbeispielsweise vor10_myotherconfiganalysiert. 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.
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_usermanagementErstellen Sie eine Regel, mit der
tuxdie Binärdatei/usr/sbin/useraddin 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
#UIDund Gruppen nach%GROUPNAMEauf. 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
ALLwird 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
useraddohne 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.
-
Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von
sudobeachtet 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_usermanagementFü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
Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von
sudobeachtet 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).
Erstellen Sie eine neue Datei, die Ihre globalen Alias-Definitionen enthält:
#visudo /etc/sudoers.d/01_aliasesFü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
visudoals Systemadministrator und bearbeiten Sie die Beispielkonfigurationsdatei:#visudo -f /etc/sudoers.d/02_usermanagementLöschen Sie die vorherige Regel und ersetzen Sie sie durch die folgende Regel mit den oben definierten Aliasnamen:
TEAMLEADERS ALL = USERMANAGEMENT
Speichern Sie die Konfiguration, verlassen Sie den Editor und öffnen Sie eine zweite Shell, um zu testen, ob Ihre neue Konfiguration von
sudobeachtet 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. Es ist wichtig zu wissen, dass die Anforderung des root-Passworts für Benutzer vorgesehen ist, die nicht Teil der wheel-Gruppe sind.
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_timeoutNach 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:
Defaults 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. 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 -sstartet 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 -istartet 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 #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
sudobegrenzen 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 in Abschnitt 3, „Ändern der Zeitüberschreitung fürsudo-Passwortanforderungen“.- Kommando
visudonutzen Mit dem Kommando
visudo -fkönnen Sie die Datei/usr/etc/sudoersauf 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 Kommandovisudo -cauch ü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
%admingrpalle Kommandos ausführen können:%admingrp ALL = (ALL) ALL
- Pfad für Binärdateien begrenzen
Mit der Direktive
secure_pathkö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 für SAP-Anwendungen.Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin"
sudo-Protokollierung transparent haltenDie Einträge für
sudowerden 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 |
-
env_reset Bei dieser Einstellung erstellt
sudoeine Mindestumgebung mitTERM,PATH,HOME,MAIL,SHELL,LOGNAME,USER,USERNAMEundSUDO_*. Zusätzlich werden Variablen, die inenv_keepaufgelistet 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_resetON 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_resetOFF 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
%GROUPNAMEoder 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.ALList eine häufige Wahl fürHost_List.-
NOPASSWD:|PASSWD: Der Benutzer wird nicht aufgefordert, ein Passwort einzugeben, wenn Kommandos ausgeführt werden, die
Cmd_ListnachNOPASSWD:: 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–2025 , 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 in Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie in 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.