Wie man sudo unter Linux verwendet und die sudoers-Datei optimal nutzt.

  • Mit sudo können Sie Befehle als ein anderer Benutzer (in der Regel root) kontrolliert und temporär ausführen.
  • Die Berechtigungseinstellungen werden in /etc/sudoers und in den /etc/sudoers.d-Dateien mit Hilfe von visudo definiert.
  • Gruppen wie sudo oder wheel und Aliase in sudoers erleichtern es, bestimmten Benutzern spezifische Berechtigungen zu erteilen.
  • Optionen wie NOPASSWD ermöglichen es Ihnen, Sicherheit und Komfort bei der Verwendung von sudo in verschiedenen Szenarien anzupassen.

Verwendung von sudo unter Linux

Wenn Sie täglich mit Linux arbeitenFrüher oder später werden Sie auf diesen Befehl stoßen. sudoEs ist der Schlüssel, der es Ihnen ermöglicht, administrative Aufgaben auszuführen, ohne sich als Benutzer anmelden zu müssen. root Ständig, was nicht nur unpraktisch, sondern auch ziemlich gefährlich ist. Zu verstehen, wie es funktioniert, welche Optionen es bietet und wie man es konfiguriert, ist entscheidend, um das System nicht versehentlich zu beschädigen oder unbemerkt eine Sicherheitslücke zu hinterlassen.

In diesem Artikel werden wir ins Detail gehen. Worum geht es genau? sudoIn welcher Beziehung steht es zum Nutzer? root und mit der Datei /etc/sudoersWas sind die Unterschiede zwischen der Verwendung von su y sudound wie Sie die Einstellungen feinabstimmen können, um bestimmten Benutzern oder Gruppen sehr spezifische Berechtigungen zu erteilen (sogar ohne Passwortabfrage). Die Idee ist, dass Sie nach dem Lesen genau wissen, wann Sie diese Funktion einsetzen sollten. sudoWas es im Inneren bewirkt und wie man es angstfrei kontrollieren kann.

Was ist sudo und warum ist es unter Linux so wichtig?

Der Befehl sudo Es ist eines der Schlüsselstücke eines jeden modernen Linux-Systems. Sein Name wird üblicherweise als „Superuser-Befehl“ oder „Benutzer ersetzen und ausführen“ erklärt, und seine Funktion ist einfach, aber wirkungsvoll: Er ermöglicht es einem autorisierten Benutzer, Befehle so auszuführen, als wäre er ein anderer Benutzer im System. rootfür eine begrenzte Zeit.

In der Praxis bedeutet dies dass ein normaler Benutzer administrative Aufgaben ausführen kann – Pakete installieren, Systemeinstellungen ändern, Dienste verwalten, Berechtigungen für sensible Dateien ändern – ohne Melden Sie sich direkt an als rootDiese Trennung zwischen normalem Benutzer und Superuser ist eine der Säulen der Sicherheit in Linux.

Die meisten aktuellen Verteilungen (Debian, Ubuntu, viele Derivate, SLE-Systeme usw.) bringen sudo Es ist vorinstalliert und sollte nicht leichtfertig deinstalliert oder verändert werden. Darüber hinaus wird auf vielen Systemen der bei der Installation erstellte Benutzer automatisch der Administratorgruppe hinzugefügt, die über die entsprechenden Berechtigungen verfügt. sudound wird somit zum standardmäßigen privilegierten Benutzer.

Etwas, das man unbedingt beachten sollte ist, dass sudo Es "konvertiert" einen Benutzer nicht in root Es gewährt keinen vollständigen Systemzugriff, sondern ermöglicht Benutzern lediglich die Ausführung bestimmter Befehle im Namen eines anderen Benutzers gemäß den in der Konfiguration definierten Regeln. Auf diese Weise lassen sich sehr spezifische Berechtigungen erteilen, ohne vollen Systemzugriff zu gewähren.

Wie sudo intern funktioniert

Die grundlegende Funktionsweise von sudo Aus Sicht des Nutzers ist es ganz einfach: Man platziert das Wort sudo vor dem Befehl, den wir mit Administratorrechten ausführen möchten. Zum Beispiel, um die Paketliste zu aktualisieren mit apt-get Unter Debian oder Ubuntu muss ein normaler Benutzer etwa Folgendes tun:

sudo apt-get update

Wenn Sie versuchen, einen administrativen Befehl ohne sudo auszuführenAm häufigsten erhalten Sie Fehlermeldungen wie „Zugriff verweigert“ oder Meldungen, die darauf hinweisen, dass eine bestimmte gesperrte Datei nicht geöffnet werden kann. /var/lib oder in einem anderen Systemverzeichnis. Sobald Sie denselben Befehl wiederholen und hinzufügen sudo Als nächstes werden Sie vom System nach Ihrem Passwort gefragt, und wenn alles korrekt konfiguriert ist, wird der Befehl mit Superuser-Rechten ausgeführt.

Wenn Sie einen Befehl ausführen mit sudoDas Programm prüft zunächst anhand der Konfigurationsdatei, ob Ihr Benutzer zur Nutzung berechtigt ist und für welche spezifischen Befehle. /etc/sudoers und in vielen Systemen die zusätzlichen Dateien im Verzeichnis /etc/sudoers.d/Sofern die Regeln es zulassen, sudo Es fragt nach dem Passwort (in der Regel Ihrem, nicht dem des Anbieters). root) und erhöht vorübergehend Ihre Berechtigungen, um den Befehl als Zielbenutzer auszuführen.

Ein kurioses Detail, das einen oft zunächst verwirrt. Wenn Sie am Terminal zur Eingabe Ihres Passworts aufgefordert werden, werden während der Eingabe keine Zeichen angezeigt, nicht einmal Sternchen. Das ist völlig normal: Die Eingabe erfolgt „blind“ und ist Teil der Sicherheitsmaßnahmen, die die Länge Ihres Passworts schützen sollen.

Darüber hinaus unterhält Sudo eine Art „Vertrauenssitzung“.Nach erfolgreicher Passworteingabe bleiben die erhöhten Berechtigungen für eine gewisse Zeit (standardmäßig etwa 15 Minuten in vielen Distributionen) im selben Terminal aktiv. Während dieser Zeit können Sie weitere Befehle ausführen. sudo ohne dass Sie immer wieder nach dem Passwort gefragt werden.

Grundlegende Syntax und die nützlichsten Optionen von sudo

Die allgemeine Syntax von sudo Es ist sehr einfach:

> sudo-Befehl

Die gebräuchlichste Art der Anwendung ist einfach als sudo comandoEs bietet jedoch eine Reihe interessanter Optionen. Einige der am häufigsten verwendeten (und in vielen offiziellen Anleitungen hervorgehobenen) sind die folgenden:

  • -hZeigt eine Hilfemeldung mit der Syntax und allen verfügbaren Optionen des Programms an. sudo.
  • -V: zeigt die aktuelle Version von sudo und einige Details zur Zusammenstellung.
  • -v: Verlängert die Authentifizierungs-„Kulanzzeit“, d. h. aktualisiert den Zähler, damit Ihre Berechtigungen nicht ablaufen und Sie Ihr Passwort nicht bald erneut eingeben müssen.
  • -k: macht gespeicherte Anmeldeinformationen sofort ungültig; es ist, als würde man sagen sudo Das System "vergisst", dass Sie sich bereits authentifiziert haben, und zwingt Sie beim nächsten Mal, Ihr Passwort erneut einzugeben.
  • -l: zeigt an, welche Befehle Sie ausführen dürfen mit sudo gemäß der aktuellen Konfiguration von sudoers.

Es gibt außerdem sehr nützliche Optionen, um Befehle wie andere Benutzer auszuführen. außer root. Zum Beispiel mit -u Sie können einen Zielbenutzer für einen bestimmten Befehl festlegen:

> sudo -u pedro whoami

In diesem Fall gilt dies auch dann, wenn Ihre Sitzung einem anderen Benutzer gehört., der Befehl whoami Es wird „pedro“ zurückgegeben, da der Befehl so ausgeführt wurde, als wären Sie dieser Benutzer. Dies ist sehr praktisch, um Berechtigungen zu testen oder Aufgaben im Zusammenhang mit Dienstkonten durchzuführen, ohne die Sitzung manuell wechseln zu müssen.

sudo im Vergleich zu su und dem Root-Benutzer

In Linux existieren mehrere Mechanismen nebeneinander. Um Administratorrechte zu erhalten: Registrieren Sie sich direkt als rootVerwenden Sie den Befehl su und verwenden sudoJede Variante hat ihre Vor- und Nachteile, und wenn man diese versteht, erspart man sich viel Ärger.

Melden Sie sich direkt als Root an. (zum Beispiel mit ssh root@servidorDadurch erhalten Sie von Anfang an vollen Zugriff auf das System. Das ist zwar sehr praktisch, aber auch extrem gefährlich: Jeder Tippfehler kann die Hälfte des Systems löschen, wichtige Berechtigungen ändern oder den Rechner unbrauchbar machen. Daher ist die Arbeit mit Anmeldesitzungen in den meisten Fällen nicht empfehlenswert. root Dauerhaft geöffnet.

Der Befehl su (Ersatzbenutzer) Es ermöglicht Ihnen, innerhalb desselben Terminals zu einem anderen Benutzer zu wechseln. Die ursprüngliche Sitzung bleibt im Hintergrund aktiv und „kapselt“ die neue. Wenn Sie Folgendes ausführen: su pedroSie werden nach Ihrem Passwort gefragt. pedro und, sobald Sie drinnen sind, wenn Sie Folgendes eingeben exit Sie werden zum vorherigen Benutzer zurückkehren. Wenn Sie keinen Benutzernamen angeben, su Standardmäßig versucht es, auf umzuschalten root.

Es gibt eine wichtige Nuance bei su: wenn Sie die Anmeldeoption nicht übergeben (su -, su -l o su --login) ändert den Benutzer, aber nicht die Umgebung. Das bedeutet, dass Sie im Arbeitsverzeichnis und mit den Variablen des vorherigen Benutzers verbleiben, was zu Berechtigungsfehlern führen kann (z. B. beim Versuch, die Umgebung aufzulisten). Startseite (des ursprünglichen Benutzers mit den Anmeldeinformationen des neuen Benutzers).

Stattdessen sudo Es bietet einen sichereren und besser kontrollierbaren AnsatzSie müssen das Passwort nicht kennen für rootaber Ihr eigenes Passwort, und das System entscheidet, /etc/sudoersWelche Benutzer welche Befehle ausführen können, z. B. welche Benutzer von welchen Rechnern aus. Darüber hinaus wird jede Verwendung von sudo Es wird in den Protokollen aufgezeichnet, was die Überprüfung dessen, was mit erhöhten Berechtigungen getan wurde, erleichtert.

Für interaktive Sitzungen „als anderer Benutzer“ mit sudoEs gibt einige sehr praktische Varianten:

  • Sudo -s: Öffnet eine Shell als Zielbenutzer, der die Umgebung des aktuellen Benutzers übernimmt.
  • sudo -i: Startet eine vollständige Login-Shell für den Zielbenutzer, wobei dessen Umgebung und Verzeichnis bereinigt werden. $HOME, Laden von Dateien wie .profile o .bash_profile.

Beide Optionen eignen sich für einmalige Arbeiten. als ein anderer Benutzer (normalerweise root oder ein beliebiges Servicekonto), ohne sich Ihr Passwort merken und verwenden zu müssen, und gleichzeitig die Kontrolle und eine Aufzeichnung der durchgeführten Aktionen zu behalten.

Die Datei /etc/sudoers und das Verzeichnis /etc/sudoers.d

Das Herzstück der sudo-Konfiguration Es befindet sich im Archiv. /etc/sudoersDort wird festgelegt, wer es benutzen darf. sudoVon wo aus, z. B. welcher Benutzer und welche spezifischen Befehle ausgeführt werden können. Darüber hinaus enthalten viele Distributionen eine Direktive, die automatisch alle zusätzlichen Konfigurationsdateien lädt, die sich in befinden /etc/sudoers.d/.

Es ist wichtig, das zu verstehen /etc/sudoers Man sollte nicht „ohne die richtige Bearbeitung“ bearbeiten. mit jedem beliebigen Texteditor. Es muss immer mit dem Befehl geändert werden. visudo, wodurch die Datei mit einem Editor geöffnet wird (standardmäßig vi o nano(abhängig von der Konfiguration), aber es fügt eine zusätzliche Sicherheitsebene hinzu: Es überprüft die Syntax vor dem Speichern und verhindert, dass zwei Personen gleichzeitig daran arbeiten.

Die typische Verwendung für die Bearbeitung von sudoers ist:

> sudo visudo -f /etc/sudoers

Sie können auch spezifische Dateien erstellen in /etc/sudoers.d/ Konfigurationen können nach Benutzergruppen, Diensten usw. getrennt werden. Beispielsweise kann eine Datei verwendet werden. /etc/sudoers.d/networking mit spezifischen Regeln für die Netzwerkadministration, ohne diese mit der übrigen allgemeinen Konfiguration zu vermischen.

Beim Öffnen von /etc/sudoers auf einem typischen SystemSie werden Zeilen wie diese sehen (Kommentare nicht mitgerechnet):

  • root ALL=(ALL:ALL) ALL: der Benutzer root Sie können jeden Befehl auf jedem Host, als jeder Benutzer und in jeder Gruppe ausführen.
  • %admin ALL=(ALLE) ALLE: jede Person innerhalb der Gruppe admin hat volle Berechtigungen zur Nutzung sudo.
  • %sudo ALL=(ALL:ALL) ALLEDas Gleiche gilt für die Gruppe sudo, was in Ubuntu und Derivaten üblicherweise die Schlüsselgruppe ist.
  • #include /etc/sudoers.dDas : zeigt an, dass die Dateien in diesem Verzeichnis ebenfalls gelesen werden sollen (auch wenn ein #(Dies ist kein Kommentar in diesem speziellen Kontext).

Zusätzlich zu Benutzer- und Gruppenregeln, sudoers Es ermöglicht die Definition von Aliasen, um komplexe Konfigurationen zu vereinfachen: Benutzeraliase (User_Alias), von Befehlen (Cmnd_Alias), von Hinrichtungsgruppen (Runas_Alias) oder von Wirten (Host_Alias).

Benutzer und Gruppen mit sudoers verwalten

Eine gängige Praxis auf Servern kontrolliert den Zugriff auf sudo über Gruppen. In vielen Systemen genügt es beispielsweise, einen Benutzer der Gruppe hinzuzufügen. sudo o wheel damit Sie alle erforderlichen Genehmigungen erhalten können.

Um zu überprüfen, welche Benutzer zu einer Gruppe gehören bestimmt (zum Beispiel, sudo), können Sie verwenden:

> grep 'sudo' /etc/group

Wenn Sie einem Benutzer sudo-Berechtigungen erteilen möchtenÜblicherweise wird es der entsprechenden Gruppe hinzugefügt. Zum Beispiel, um es einzubinden bill Zur Gruppe sudo:

> sudo adduser bill sudo

Wenn Sie diese Berechtigungen widerrufen müssenEntfernen Sie es einfach aus der Gruppe:

> sudo deluser bill sudo

Eine weitere, weitaus bessere Möglichkeit Dabei werden Berechtigungen nur für bestimmte Befehle erteilt, ohne uneingeschränkten Zugriff zu gewähren. Zu diesem Zweck werden üblicherweise spezielle Dateien erstellt. /etc/sudoers.d/Sie könnten beispielsweise eine Datei definieren /etc/sudoers.d/networking mit etwas wie:

Cmnd_Alias ​​​​CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias ​​​​SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias ​​​​NETALL = CAPTURE, SERVERS
%netadmin ALL = NETALL

Mit dieser Konfiguration kann jeder Benutzer in der Gruppe netadmin Sie werden in der Lage sein, die unter dem Alias ​​definierten Befehle auszuführen. NETALL (welche die Aliase gruppiert) CAPTURE y SERVERSohne vollen Zugriff auf alles zu haben sudoMan muss lediglich hinzufügen: bill Zur Gruppe netadmin damit Sie es verwenden können tcpdump und die definierten Servertools.

Häufig verwendete Befehle, die sudo erfordern

Im täglichen Betrieb von SystemenEs gibt verschiedene Aufgabentypen, die fast immer zusammengehören mit sudoweil sie die Modifizierung des Systems oder den Zugriff auf vertrauliche Informationen beinhalten.

Paketverwaltung: in Verteilungen basierend auf zypper, apt Bei der Installation, Deinstallation oder Aktualisierung von Software durch andere Paketmanager sind entsprechende Berechtigungen erforderlich. Zum Beispiel:

> sudo zypper install package
sudo apt-get install docker-ce

Allerdings gibt es Abfragen, die nur Informationen lesen.Befehle wie das Auflisten von Repositorys können in der Regel ohne sudoEs geht darum, zu testen und abzuwarten, wann das System selbst einen Berechtigungsfehler zurückgibt.

Dienstverwaltung mit systemd Das geschieht üblicherweise durch systemctlAktionen wie das Starten, Stoppen oder Neustarten von Diensten erfordern in der Regel sudo:

sudo systemctl restart apache2

Im Gegensatz dazu gibt es harmlosere Befehle wie das Überprüfen des Status eines Dienstes. Sie können auf vielen Systemen ohne Administratorrechte funktionieren:

> systemctl status NetworkManager

Auch die Verwaltung von Benutzerkonten erfordert Sorgfalt.. Befehle wie usermod, useradd o deluser Sie sollten fast immer mit sudoda sie die Benutzerdatenbank des Systems verändern:

sudo usermod -L -f 30 tux

Schließlich noch die Dateiberechtigungen und die Verwaltung des Dateibesitzes. mit chown Ein Unternehmen benötigt in der Regel Berechtigungen, wenn es Systempfade oder andere Benutzer betrifft. Zum Beispiel, um alle Dateien und Unterverzeichnisse von /home/test/tux-files werden Eigentum des Nutzers tux Sie könnten Folgendes verwenden:

sudo chown -R tux:tux /home/test/tux-files

Praktische Beispiele für die Verwendung von sudo

Schauen wir uns einige reale Fälle an. wo sudo Es macht den Unterschied zwischen einem Berechtigungsfehler und einem korrekten administrativen Vorgang aus.

Aktualisieren von Paketindizes in Debian/Ubuntu Ohne entsprechende Berechtigungen treten Fehler auf, da das Programm keine Dateien bearbeiten kann. /var/lib/apt/listsDer Befehl:

apt-get update

Es wird mit der Fehlermeldung „Zugriff verweigert“ enden.Sobald man das so wiederholt, ändern sich die Dinge:

sudo apt-get update

Das System wird Sie nach Ihrem Passwort fragen.und wenn Ihr Benutzer autorisiert ist in sudoersDas Update wird problemlos laufen. Es handelt sich um ein wiederkehrendes Muster: Berechtigungsfehler ohne sudokorrekte Ausführung mit sudo.

Ein weiteres sehr häufiges Beispiel ist das Kopieren von Dateien in Systempfade.Als /usr/local/binWenn Sie versuchen, ein Skript mit einem einfachen Befehl dorthin zu kopieren:

> cp script.sh /usr/local/bin/

Es ist normal, dass das Terminal sich beschwert. dass Sie keine Schreibberechtigung für dieses Verzeichnis haben. Wenn Sie den Vorgang wiederholen, indem Sie Folgendes hinzufügen sudo:

> sudo cp script.sh /usr/local/bin/

Sie werden nach Ihrem Passwort gefragt und nach erfolgreicher Authentifizierung,Die Kopie wird angefertigt und als mit erhöhten Rechten ausgeführt protokolliert.

Sie können sudo auch mit der Option kombinieren. -u um bestimmte Befehle als anderer Benutzer auszuführen, ohne die Sitzung zu wechseln oder zu verwenden su. Zum Beispiel:

wer bin ich?
> sudo -u pedro whoami

Bei der ersten Bestellung wird Ihr echter Benutzername angezeigt.Die zweite Antwort gibt „pedro“ zurück und zeigt damit an, dass die Ausführung als dieser Zielbenutzer durchgeführt wurde.

Berechtigungen ohne Passwort erteilen und andere erweiterte Optionen

Eine der wirkungsvollsten Eigenschaften von Schweißausbrüchen Diese Funktion ermöglicht es Ihnen, den Umfang der Passwortabfrage und die jeweiligen Befehle anzupassen. Manchmal möchten Sie möglicherweise, dass bestimmte Benutzer bestimmte Befehle ausführen können, ohne jedes Mal ihr Passwort eingeben zu müssen, beispielsweise für automatisierte Skripte oder Herunterfahren-Schaltflächen in einer Desktop-Umgebung.

Dies wird mit dem Label erreicht. NOPASSWD in den Regeln von sudoersWenn Sie beispielsweise möchten miusuario kann ausführen /bin/cat mit sudo Ohne Passwortabfrage könnten Sie folgende Zeile hinzufügen:

myuser ALL = NOPASSWD: /bin/cat

Ebenso könnten Sie ihm die Steuerung des Herunterfahrens der Geräte überlassen. ohne wiederholte Authentifizierung, fügen Sie beispielsweise Folgendes hinzu:

myuser ALL = NOPASSWD: /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart

Für sauberere und besser skalierbare KonfigurationenEs empfiehlt sich, Aliase zu verwenden. Ein typisches Beispiel ist die Definition einer Benutzergruppe, einer Befehlsgruppe und gegebenenfalls eines Ausführungsbenutzeralias:

User_Alias ​​​​GROUP = pepe, perico, andres
Cmnd_Alias ​​​​POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
Runas_Alias ​​​​WEB = www-data, apache

Mit diesen Definitionen könnten Sie dann schreiben Deutlich lesbarere Regeln, wie zum Beispiel:

ALLE GRUPPE = MACHT

Somit ist jeder Benutzer, der im Alias ​​enthalten ist, GRUPO Sie können den Computer ausschalten oder neu starten mit sudound Sie können anpassen, ob ein Passwort erforderlich sein soll oder nicht. NOPASSWD o PASSWDSie können die Nutzung auch auf bestimmte Hosts beschränken mit Host_Alias sodass es nur innerhalb eines bestimmten Netzwerks gültig ist.

Jenseits NOPASSWDEs gibt weitere Etiketten als NOEXEC (um zu verhindern, dass ein Befehl andere Programme mit erhöhten Berechtigungen startet) oder kleine Kuriositäten wie das Hinzufügen insults bis zur Linie Defaultsso dass sudo Ich werde jedes Mal einen englischen Witz machen, wenn du das Passwort nicht eingibst.

All dies beweist, dass sudoers viel mehr ist als ein einfacher "Root-Schalter".Bei korrekter Konfiguration ermöglicht es Ihnen, ein sehr differenziertes Berechtigungsmodell zu entwerfen, das auf Ihre Bedürfnisse zugeschnitten ist und ein Sicherheitsniveau bietet, das dem typischen „Als Root anmelden und tun, was Sie wollen“ weit überlegen ist.

Mit einem Werkzeug wie sudorichtig verstanden und richtig konfiguriertAuf modernen Linux-Systemen, auf denen mehrere Benutzer arbeiten oder auf denen Risiken minimiert werden sollen, ist dies nahezu unerlässlich – selbst wenn man der einzige Benutzer ist. Die Kombination aus sudo, /etc/sudoersGruppen mögen sudo o wheel und erweiterte Tags wie NOPASSWDSie können ein sehr gutes Gleichgewicht zwischen Komfort, präziser Steuerung und Sicherheit erreichen, ohne ständig an eine Trainingseinheit gefesselt sein zu müssen. root sich nicht allein auf Glück verlassen.

Root-Benutzer in Linux
Verwandte Artikel:
Root-Benutzer in Linux: Berechtigungen, Risiken und bewährte Vorgehensweisen