Zurück zum Blog

Konfigurieren der Linux-Sudoers-Datei

Konfigurieren der Linux-Sudoers-Datei

Einführung

Fragen Sie sich manchmal, warum Sie „sudo“ eingeben müssen, wenn Sie versuchen, bestimmte Befehle in einer Linux- oder Unix-Betriebssystemumgebung auszuführen? Sudo ist eigentlich eine Abkürzung und steht für „super-user do“. Wenn Sie den sudo-Befehl verwenden, können Sie Programme ausführen und Befehle mit den Sicherheitsberechtigungen eines anderen Benutzers ausführen.

Standardmäßig erlaubt der sudo-Befehl Systembenutzern, Befehle mit den Rechten des Super-Users auszuführen. Eine Neuinstallation eines Linux/Unix-Betriebssystems erstellt ein Root-Konto, das über Super-User-Rechte verfügt. Bei der Ersteinrichtung eines Linux/Unix-Systems melden sich Systemadministratoren mit dem Root-Konto an und weisen anderen Systembenutzern Systemrechte zu. Diese Einstellungen werden in einer Datei namens sudoers gespeichert. Ein Konto mit Root-Rechten kann die sudoers-Datei bearbeiten und die Rechte anderer Benutzer ändern.

In diesem Tutorial besprechen wir, wie Sie Root-Rechte erhalten und Änderungen an der sudoers-Datei vornehmen können.

Voraussetzungen

Dies ist ein praktisches Tutorial, und Sie müssen die Befehle ausprobieren, um das Tutorial vollständig zu verstehen. Wir werden in diesem Tutorial einen Ubuntu 20.04-Server verwenden, Sie können den Schritten jedoch auch folgen, wenn Sie eine der modernen Linux-Distributionen wie Debian und CentOS verwenden. Sie können diesem Link folgen, um Ihren eigenen Ubuntu-Cloud-Server auf CloudSigma einzurichten.

Root-Rechte erlangen

Sie können Root-Rechte auf drei Arten erhalten, die wir im Folgenden besprechen werden:

Als Root anmelden

Die einfachste Methode, die die meisten Menschen verwenden, um Root-Rechte zu erhalten, besteht darin, sich mit den Anmeldedaten des Root-Benutzers an einem System anzumelden. Wenn Sie auf Ihren lokalen Computer zugreifen, können Sie einfach einen Benutzernamen eingeben und werden nach einem Passwort gefragt.

Eine andere Methode, mit der Sie sich als Root anmelden können, ist die Verwendung von SSH – einem Befehlszeilentool zum Anmelden und Ausführen von Aufgaben auf einem Server. Es erfordert einen Benutzernamen und die IP-Adresse Ihres Servers. Die Syntax für die Anmeldung als Root lautet wie folgt, ersetzen Sie die IP-Adresse Ihres Servers:

Wenn Sie den obigen Befehl in Ihr Terminal eingeben, werden Sie entweder aufgefordert, Ihr Passwort einzugeben, wenn Sie die SSH-Schlüssel nicht eingerichtet haben, oder Sie werden aufgefordert, die Passphrase für Ihren SSH-Schlüssel einzugeben, wenn Sie diese eingerichtet haben. Sobald Sie die korrekten Anmeldedaten eingegeben haben, werden Sie angemeldet. Folgen Sie dieser Anleitung für eine Schritt-für-Schritt-Anleitung zur Verwendung von SSH zur Verbindung mit einem Remote-Server in Ubuntu.

Verwendung von su, um Root zu werden

Sie können sich mit jedem anderen Konto, das nicht Root ist, bei einem Linux-System anmelden, was normalerweise der empfohlene Weg bei der Durchführung nicht-administrativer Aufgaben ist. Wann immer Sie Root-Rechte erhalten möchten, können Sie einfach su in Ihr Terminal eingeben:

Das System fragt Sie nach dem Root-Passwort, woraufhin Sie Zugriff auf eine Root-Shell-Sitzung erhalten. Während dieser Shell-Sitzung können Sie alle administrativen Aufgaben ausführen, und wann immer Sie zur normalen Shell zurückkehren möchten, drücken Sie einfach Strg + D. Optional können Sie exit in das Terminal eingeben und die Eingabetaste drücken.

Verwendung von sudo zur Ausführung von Befehlen mit Root-Rechten

Der sudo-Befehl, der zu Beginn dieses Tutorials kurz vorgestellt wurde, ermöglicht es Ihnen, einzeilige Befehle auszuführen, ohne dass eine Shell mit Root-Rechten erforderlich ist. Sie geben einfach sudo gefolgt von dem auszuführenden Befehl ein:

Um beispielsweise Ihr System zu aktualisieren, können Sie Folgendes eingeben:

Sie werden nach einem Passwort gefragt. Der Unterschied zwischen dem Befehl su und dem Befehl sudo besteht darin, dass su nach dem Root-Passwort fragt, während sudo nach dem Passwort des aktuellen Benutzers fragt. Der Sudo-Zugriff wird Benutzern standardmäßig nicht gewährt, da er erhebliche Sicherheitsauswirkungen auf das System hat. Wir werden in den folgenden Abschnitten näher darauf eingehen.

Verwendung von Visudo zur Bearbeitung der sudoers-Datei

Sudo-Rechte werden in der sudoers-Datei konfiguriert, die sich unter /etc/sudoers befindet.. Diese Privilegien sind für jeden Benutzer erforderlich, um Zugriff auf das Linux-System zu erhalten. Jeder Syntaxfehler verhindert, dass sich Benutzer am System anmelden können, wodurch das System unbrauchbar wird.

Visudo-Befehl öffnet die Datei mit einem speziellen Editor, der beim Speichern die Syntax der Datei überprüft. Es ist daher wichtig, dass Sie nur den visudo-Befehl verwenden, um die Datei zu öffnen, um zu verhindern, dass Sie Ihr Serversystem unbrauchbar machen. Standardmäßig war visudo so eingestellt, dass der Texteditor mit (vi) vim geöffnet wird. Ubuntu hat visudo jedoch so konfiguriert, dass der Texteditor nano verwendet wird. Unter Debian oder Ubuntu können Sie zu einem anderen Editor wechseln, indem Sie den folgenden Befehl eingeben:

Es wird eine Liste von Editoren angezeigt, aus der Sie einen Standard-Editor auswählen können, wie im Screenshot gezeigt. Wählen Sie die Nummer vor dem von Ihnen bevorzugten Editor:

displays a list of editors

Auf einer CentOS-Linux-Distribution bearbeiten Sie /etc/sudoers und fügen die folgenden Zeilen hinzu:

Geben Sie den folgenden Befehl ein. Denken Sie daran, den Namen von your_editor_of_choice zu ersetzen:

Der Befehl fügt die Zeile zur Datei ~/.bashrc hinzu. Geben Sie Folgendes in Ihrem Terminal ein, um die Änderungen zu übernehmen:

Da Ihr visudo nun konfiguriert ist, können Sie die Datei unter /etc/sudoers öffnen, indem Sie folgenden Befehl eingeben:

Bearbeiten der Sudoers-Datei

Wenn Sie den vorherigen Befehl ausführen, öffnet sich die Datei in Ihrem primären Editor, wie Sie ihn konfiguriert haben. Unten sehen Sie den Inhalt der Datei:

Die Kommentare sind ziemlich aussagekräftig, aber wir werden im Folgenden besprechen, was die Zeilen bedeuten.

Standardzeilen
  • Defaults env_reset – Setzt die Umgebungsvariablen des Terminals zurück, um alle Benutzervariablen zu entfernen. Dadurch werden potenziell schädliche Variablen aus einer Sudo-Sitzung gelöscht.
  • Defaults mail_badpass – Weist das System an, Benachrichtigungen über fehlgeschlagene Sudo-Passwortversuche per E-Mail an den konfigurierten mailto-Benutzer zu senden, normalerweise das Root-Konto.
  • Defaults secure_path – Enthält die verschiedenen Pfade im Dateisystem, in denen eine Sudo-Operation nach Anwendungen sucht, die bei der Ausführung verwendet werden sollen, um die Verwendung anderer benutzerdefinierter Pfade zu verhindern, die für das System gefährlich sein könnten.
Zeilen zur Spezifikation von Benutzerprivilegien
Diese Zeile unterscheidet sich von den anderen und legt die Privilegien des Root-Benutzers fest. Hier ist, was jedes Tag in der Zeile bedeutet:

  1. root ALL=(ALL:ALL) ALL – Das erste Feld gibt den Benutzernamen an, für den die Regel gilt. In diesem Fall ist es der root Benutzer.
  2. root ALL=(ALL:ALL) ALL – Das erste ALL gibt an, dass die Regel für alle Hosts gilt.
  3. root ALL=(ALL:ALL) ALL – Das zweite ALL gibt an, dass der Benutzer, für den diese Regel gilt (d. h. root) Befehle als alle Benutzer ausführen kann.
  4. root ALL=(ALL:ALL) ALL – Das dritte ALL gibt an, dass der Benutzer, für den diese Regel gilt (d. h. root) Befehle als alle Gruppen ausführen kann.
  5. root ALL=(ALL:ALL) ALL – Das letzte ALL gibt an, dass diese Regeln für alle Befehle gelten.

Wie diese Regel zeigt, kann ein Root-Benutzer jeden Befehl mit sudo ausführen, sobald er das richtige Passwort eingibt.

Zeilen zur Spezifikation von Gruppenprivilegien

Diese Zeilen legen die Sudo-Privilegienregeln fest, die für Gruppen gelten. Die Felder weisen auf dieselben Aktionen hin wie die Zeilen für Benutzerprivilegien, mit einem kleinen Unterschied. Sie beginnen mit einem %, um Gruppennamen anzuzeigen.

Wie Sie sehen können, kann die admin-Gruppe jeden Befehl als beliebiger Benutzer auf jedem Host ausführen. Die sudo-Gruppe hat dieselben Privilegien mit dem zusätzlichen Privileg, Befehle als beliebige Gruppe auszuführen.

Zeile zum Einbinden von /etc/sudoers.d

Die Zeile #includedir /etc/sudoers.d  mag aufgrund des # am Anfang der Zeile wie ein Kommentar aussehen. Dies ist jedoch eine Include-Direktive, die angibt, dass die Dateien im Verzeichnis /etc/sudoers.d eingelesen und als Teil der sudoers-Datei verwendet werden sollen. Dateien in diesem Verzeichnis folgen denselben Regeln wie die sudoers-Datei.

Jede Datei in dem Verzeichnis, die keinen Punkt (.) enthält und nicht auf ~ endet, wird gelesen und an die Konfiguration der sudoers-Datei angehängt. Das Verzeichnis ermöglicht es Anwendungen, Sudo-Privilegien bei der Installation zu ändern, indem sie alle zugehörigen Regeln in einer einzigen dedizierten Datei im Verzeichnis /etc/sudoers.d ablegen, ohne die Standard-sudoers-Datei zu ändern. Wenn Sie außerdem die Privilegien für eine Anwendung überprüfen oder rückgängig machen möchten, können Sie die Dateien im Verzeichnis /etc/sudoers.d einfach überprüfen oder ändern, ohne die Datei /etc/sudoers direkt zu bearbeiten.

Als Faustregel gilt, dass alle Dateien im Verzeichnis /etc/sudoers.d immer mit dem Befehl visudo bearbeitet werden sollten. Unten finden Sie die Syntax. Denken Sie daran, den Namen der Datei, die Sie bearbeiten möchten, im Befehl zu ersetzen:

Zuweisen von Sudo-Privilegien an einen Benutzer

Wenn Sie einem neuen Benutzer allgemeinen Sudo-Zugriff gewähren, bedeutet dies, dass Sie dem Benutzerkonto vollen administrativen Zugriff auf das System gegeben haben. Dies ist eine häufige Aufgabe, die Systemadministratoren ausführen, wenn sie andere Nicht-Root-Benutzer mit Sudo-Privilegien erstellen.

In Systemen wie Ubuntu 20.04, die bereits über die allgemeine Administrationsgruppe verfügen, können wir einem Benutzer ganz einfach Sudo-Privilegien zuweisen, indem wir den Benutzer zu dieser Gruppe hinzufügen. Die Sudo-Gruppe, wie sie in der Datei /etc/sudoers definiert ist, verfügt über volle administrative Privilegien, und wir können der Gruppe einen Benutzernamen hinzufügen, indem wir den folgenden Befehl eingeben:

Optional können Sie den Befehl gpasswd verwenden, um dasselbe zu erreichen:

Unter CentOS, heißt die Standardgruppe mit Sudo-Privilegien wheel, sodass Sie die Privilegien mit dem folgenden Befehl zuweisen können:

Optional können Sie mit dem Befehl gpasswd dasselbe mit folgendem Befehl erreichen:

In einigen Fällen wird die wheel Gruppe unter CentOS ist möglicherweise in der Datei /etc/sudoers auskommentiert. Um sie zu aktivieren, öffnen Sie die Datei mit visudo und entfernen Sie das Auskommentierungszeichen vor der Zeile mit dem Gruppennamen. Sie können dies tun, indem Sie das # am Anfang der Zeile entfernen: %wheel ALL=(ALL) ALL.

Eigene Regeln erstellen

Mit dem Wissen über die allgemeine Syntax der Sudoers, das Sie bis zu diesem Zeitpunkt erworben haben, ist es an der Zeit, einige Regeln einzurichten.

Aliase erstellen

Aliase ermöglichen es Ihnen, Ihre Sudoers-Datei zu organisieren, indem Sie Elemente unter verschiedenen „Aliasen“ gruppieren. Wir haben drei Direktiven, die wir in diesem Abschnitt besprechen werden: User_Alias zum Erstellen von Benutzer-/Gruppen-Aliasen, Cmnd_Alias zum Erstellen von Befehls-Aliasen und Runas_Alias um einem anderen Benutzer zu erlauben, als ein anderer Benutzer ausgeführt zu werden.

Beispielsweise können Sie unter Verwendung von User_Alias, in Ihrer /etc/sudoers-Datei das folgende Snippet hinzufügen, um drei verschiedene Benutzergruppen zu erstellen. Einige Benutzer können mehr als einer Gruppe angehören:

Beachten Sie, dass alle Gruppennamen mit einem Großbuchstaben beginnen. Wenn die oben genannten Gruppen-Aliase in der Datei /etc/sudoers hinzugefügt wurden, können Sie ein Privileg zur Aktualisierung der apt-Datenbank an GROUPTWO vergeben, indem Sie die folgende Regel in der Datei /etc/sudoers hinzufügen:

Beachten Sie, dass ohne Angabe des Benutzers/der Gruppe, als die der Befehl ausgeführt werden soll, der Befehl sudo standardmäßig immer als Benutzer root ausgeführt wird.

Hier ist ein Beispiel für Cmnd_Alias, bei dem wir einen Befehls-Alias zum Herunterfahren und Neustarten des Systems erstellen. Die Regel wird dann GROUPTHREE zugewiesen. Dies wird durch Hinzufügen der folgenden Zeilen in der Datei /etc/sudoers erreicht:

Im obigen Snippet erstellt die erste Zeile einen Befehls-Alias namens POWER, der Befehle zum Ausschalten und Neustarten enthält. Die zweite Zeile erlaubt es Mitgliedern von GROUPTHREE, diesen Befehl auszuführen.

Hier ist ein Beispiel für den Runas_Alias, bei dem wir einen Alias erstellen, der es einer Gruppe von Benutzern ermöglicht, als ein anderer Benutzer ausgeführt zu werden:

Im obigen Snippet erstellt die erste Zeile einen Alias namens WEB, und legt fest, dass der Alias als Benutzer apache oder als Benutzer www-data ausgeführt wird. Die zweite Zeile weist den Alias GROUPONE zu. Jetzt können Mitglieder der ersten Gruppe Befehle entweder als Benutzer apache oder www-data ausführen.

Regeln zur Absicherung

In diesem Abschnitt erfahren Sie, wie Sie auf verschiedene Weise steuern können, wie sudo auf einen Aufruf reagiert. Einige Befehle sind auf Einzelsystemen relativ harmlos. In solchen Fällen können Sie Benutzern erlauben, sie mit root-Privilegien auszuführen, ohne das root-Passwort eingeben zu müssen. Sie können beispielsweise eine Regel erstellen, die es Benutzern in GROUPONE erlaubt, den Befehl updatedb ohne Passworteingabe auszuführen, indem Sie Folgendes in der Datei /etc/sudoers hinzufügen:

Das Tag NOPASSWD bedeutet, dass kein Passwort angefordert wird. Das Gegenstück zum Tag NOPASSWD ist PASSWD, was dem Standardverhalten entspricht. Dies bedeutet, dass bei der Eingabeaufforderung ein Passwort eingegeben werden muss.

Ein Tag gilt für eine Regel, es sei denn, es wird durch sein Gegenstück außer Kraft gesetzt, zum Beispiel:

In dieser Regel können Benutzer in GROUPTWO den Befehl updatedb -Befehl ohne Eingabe eines Passworts ausführen. Sie müssen jedoch ein Passwort angeben, bevor sie den kill-Befehl ausführen.

In einigen Fällen möchten Sie Benutzer möglicherweise daran hindern, bestimmte Befehle auszuführen, um gefährliche Ausführungen zu verhindern. Hier kommt das NOEXEC-Tag ins Spiel. Einige Programme können andere Befehle aus ihrer Benutzeroberfläche heraus ausführen. Ein Beispiel für ein solches Programm ist less. Wenn Sie einen Befehl mit der folgenden Syntax innerhalb der less-Benutzeroberfläche eingeben, wird er ausgeführt, was zu unerwartetem Verhalten führen kann.

Um ein solches Verhalten zu verhindern, können Sie der Datei /etc/sudoers die folgende Regel hinzufügen, um einen bestimmten Benutzer zu beschränken, der identifiziert wird mit username:

Zusätzliche Informationen

In diesem Abschnitt finden Sie einige zusätzliche Informationen, Richtlinien und Befehle, die Sie bei der Arbeit mit sudo als nützlich erachten könnten.

Wenn Sie den Runas_Alias in der Konfiguration verwendet haben, der angibt, dass ein Benutzer oder eine Gruppe als ein anderer Benutzer ausgeführt werden kann, können Sie Befehle als diese Benutzer ausführen, indem Sie das Flag -u für den Benutzer und das Flag -g für Gruppen verwenden. Hier ist die Syntax:

Jeder der Befehle fordert Sie auf, das zugehörige Passwort einzugeben. Aus Bequemlichkeitsgründen speichert sudo das Passwort für einige Zeit, sodass Sie es nicht jedes Mal neu eingeben müssen, wenn Sie einen Befehl mit sudo ausführen. Sie können diese Zeitspanne löschen, sobald Sie mit den sudo-privilegierten Befehlen fertig sind, indem Sie den folgenden Befehl eingeben:

Falls Sie weitere Aufgaben mit sudo-Privilegien ausführen müssen und die Zeit bis zur Passwortabfrage verlängern möchten oder verhindern wollen, dass der sudo-Befehl später nach einem Passwort fragt, können Sie die Zeit durch Eingabe des folgenden Befehls verlängern:

Der Befehl fordert Sie zur Eingabe eines Passworts auf und speichert es für spätere sudo-Verwendungen im Cache.

Um die für Ihren Namen definierten sudo-Privilegien aufzulisten, können Sie den folgenden Befehl eingeben:

Der Befehl listet alle in der Datei /etc/sudoers konfigurierten Regeln auf, die für Ihren Benutzernamen gelten. Anhand der Regeln können Sie sich ein Bild davon machen, welche Aufgaben Ihr Benutzername auf dem System ausführen kann. Hier ist ein Beispiel-Screenshot:

screenshot

In einigen Fällen führen Sie Befehle aus, die fehlschlagen, weil Sie vergessen haben, sudo voranzustellen. In solchen Szenarien müssen Sie den Befehl möglicherweise beginnend mit sudo neu eingeben. Um die Neueingabe des Befehls zu vermeiden, können Sie die Bash-Funktionalität zum „Wiederholen des letzten Befehls“ nutzen. Die Syntax besteht aus zwei Ausrufezeichen. Sie können den letzten Befehl, den Sie in Ihrem Terminal ausgeführt haben, ausführen, indem Sie Folgendes eingeben:

Schließlich ist es wichtig zu wissen, dass sudo den auszuführenden Befehl lediglich mit sudo-Privilegien ausstattet. Für weitere Informationen können Sie den Anweisungen auf diesem Link folgen, um etwas Spaß mit Ihren Benutzern zu haben.

Fazit

Wenn Sie mit mehreren Benutzern arbeiten, ist es entscheidend, sich mit dem sudo-Befehl und der sudoers-Datei auszukennen. In diesem Tutorial haben wir die Grundlagen des Lesens und Änderns der sudoers-Datei sowie die verschiedenen Methoden vorgestellt, mit denen Sie Root-Rechte erlangen können.

Denken Sie immer daran, dass die Trennung von Privilegien Linux-Systeme sicher macht. Daher sollten normalen Benutzern keine Superuser-Rechte gewährt werden. Weisen Sie nur Privilegien zu, die für einen bestimmten Benutzer absolut notwendig sind, um seine spezifischen Aufgaben im System auszuführen, und nicht alle Privilegien.

Viel Spaß beim Computing!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.