07.06.2023

Debian Superuser-Rechte (sudo, visudo)

Allgemeine Hinweise

Linux Betriebssysteme implementieren das Prinzip der Differenzierung von Benutzerrechten, was bedeutet, dass verschiedene Konten unterschiedlich viele Zugriffsrechte auf Verzeichnisse, Dateien und Programme habenramS. Die maximalen Rechte werden dem integrierten Root-Konto gewährt. Neu erstellte Benutzerkonten unterliegen in der Regel erheblichen Einschränkungen beim Zugriff auf Systemkonfigurationsdateien, der Verwaltung von Diensten sowie der Installation und Löschung von Softwarepaketen. Allerdings wird vom Arbeiten im Betriebssystem unter dem Root-Konto vor allem aus Sicherheitsgründen dringend abgeraten. In diesem Fall ist die sudo Das Befehlszeilen-Dienstprogramm kommt zur Rettung.

Der Befehl sudo ermöglicht die Ausführung einzelner Befehle mit erhöhten Rechten (standardmäßig mit Root-Rechten) über ein nicht privilegiertes Konto. Sehen wir uns an, was erforderlich ist, damit dieses Dienstprogramm funktioniert.

Installation und Konfiguration

In Ubuntu Betriebssystem, sudo ist standardmäßig aktiviert und in DebianWenn das entsprechende Paket während des Installationsvorgangs nicht ausgewählt wurde, wird höchstwahrscheinlich das folgende Bild angezeigt:

Wurzel@debian10:~# sudo
-bash: sudo: Befehl nicht gefunden

Sie müssen also das fehlende Paket installieren. Aktualisieren Sie die Repository-Informationen und installieren Sie sudo:

apt-get update
apt-get install sudo

Wir warten auf das Ende des Prozesses:

Screenshot Nr. 1. Debian Superuser-Rechte

Nach einer erfolgreichen Installation müssen Sie sudo konfigurieren, um zu bestimmen, welche Benutzer oder Gruppen in welchem ​​Umfang die Rechteausweitung nutzen können. Alle diese Einstellungen werden in der Konfigurationsdatei gespeichert / etc / sudoersEs wird jedoch dringend davon abgeraten, direkt Änderungen daran vorzunehmen. Für diese Zwecke wird ein spezieller Befehl verwendet:

visudo

Dadurch wird ein Texteditor mit einer Konfigurationsdatei gestartet:

Screenshot Nr. 2. Texteditor mit einer Konfigurationsdatei

Für die Rechtevergabe sind zwei Linien zuständig:

root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALLE

Die erste Zeile legt die Rechte für das Root-Konto fest, die zweite legt die Rechte für Mitglieder der Sudo-Gruppe fest, die bei der Installation des Pakets erstellt wurde (die % (Ein Zeichen vor dem Namen bedeutet, dass der Name zu einer Benutzergruppe gehört).

Dementsprechend haben wir im Wesentlichen zwei Möglichkeiten, dem Benutzerkonto das Nutzungsrecht einzuräumen sudo:

Fügen Sie der Sudo-Gruppe auf dem Server ein Benutzerkonto (z. B. Benutzer) hinzu:

usermod –a –G sudo-Benutzer

Nachdem Sie die Gruppenmitgliedschaft geändert haben, müssen Sie sich erneut bei diesem Konto anmelden, um die neue Konfiguration zu übernehmen. Diese Methode empfiehlt sich in Fällen, in denen dem Benutzer volle Rechte gewährt werden müssen.

Erstellen Sie in der Datei einen neuen Eintrag, beispielsweise für das Benutzerkonto. Wir fügen eine Zeile ähnlich wie root hinzu:

Benutzer ALL=(ALL:ALL) ALLE

Das Hinzufügen eines neuen Eintrags empfiehlt sich in Fällen, in denen die Liste der Berechtigungen angepasst wird (dazu später mehr). Wenn wir Änderungen an der Datei vorgenommen haben, müssen wir diese speichern, indem wir die Tastenkombination Strg-O drücken und den Editor verlassen – Strg-X.

Jetzt können Sie die korrekte Funktion überprüfen:

Benutzer@debian10:~$ sudo cat /etc/sudoers
[sudo] Passwort für Benutzer:

Der Befehl sudo fragt nach dem Passwort des aktuellen Benutzers (in diesem Fall Benutzer) – geben Sie es ein, und wenn alles richtig gemacht wurde, sehen wir den Inhalt der Systemkonfigurationsdatei.

Feintuning

Somit kann ein normaler Benutzer Befehle mit den Rechten des Root-Kontos ausführen, ohne sein Passwort zu kennen. Das ist sehr praktisch, kann aber unsicher sein – ist es möglich, den Bereich der Befehle einzuschränken, die mit sudo ausgeführt werden können? Ja, und dabei hilft uns dieselbe Konfigurationsdatei. Wir starten Visudo erneut und verstehen weiter. Wir interessieren uns für die paramNach dem Benutzernamen angegebene Werte:

Screenshot Nr. 3. Parameters nach dem Benutzernamen angegeben

Wir werden sie genauer analysieren:

  • ALLER= (ALL: ALLE) ALLE - der erste Parameter bestimmt, auf welchen Host die Konfiguration angewendet wird. Bei Verwendung eines dedizierten Servers ist der parameter kann unverändert bleiben;
  • ALLE=(ALLES ALLES)ALLE - die paramDie Werte in Klammern bestimmen die Berechtigung des Benutzers (erster Abschnitt).rameter) und/oder Gruppe (zweite parameter) wird der Befehl ausgeführt. Standardmäßig führt sudo den Befehl als Root aus, aber beim Start können Sie mit dem Schalter –u ein anderes Konto angeben und mit dem Schalter –g können Sie eine andere Gruppe angeben, deren Berechtigungen beim Start verwendet werden;
  • ALLE=(ALLE: ALLE)ALLER- der dritte Parameter ermittelt, zu welchen Dateien und Befehlen diese Einstellungen gehören.

Bestimmen Sie auf der Grundlage des Vorstehenden ggf. die Liste der zulässigen Befehle und ersetzen Sie den letzten SchrittramÄther ALLER mit dem, was wir brauchen, indem wir die Befehle durch Kommas getrennt auflisten. Zum Beispiel die Zeile:

Benutzer ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat

Gibt dem Benutzer das Recht, mit sudo den Server mit sudo /sbin/shutdown –r neu zu starten und Dateien mit sudo /bin/cat anzuzeigen. Andere Befehle über sudo werden nicht ausgeführt. Wenn Sie beispielsweise versuchen, den Server mit dem Befehl sudo /sbin/shutdown –h herunterzufahren, erhalten wir die Antwort:

Leider ist es dem Benutzer user nicht gestattet, „/sbin/shutdown -h“ als Root auszuführen debian10

Nützlich

Sie können die Liste der Berechtigungen anzeigen, indem Sie sudo –l (die Liste für den aktuellen Benutzer wird angezeigt) oder sudo –l –U user (die Liste der Benutzerberechtigungen wird angezeigt) ausführen:

Screenshot Nr. 4. Die Liste der Benutzerrechte

Die Zusammensetzung von sudo umfasst den Befehl sudoedit, der einen Texteditor mit der angegebenen Datei sofort mit erhöhten Rechten startet, d. h. anstelle des Befehls:

sudo nano /etc/network/interfaces

kann laufen:

sudoedit /etc/network/interfaces

Wenn Sie längere Zeit im Modus mit erhöhten Rechten arbeiten müssen und es unpraktisch ist, für jeden Befehl sudo einzugeben, können Sie über sudo eine Instanz des Befehlsinterpreters ausführen:

Sudo Bash

und weiter daran arbeiten – alle Teams werden mit erhöhten Rechten gestartet. Beenden Sie nach Abschluss den Interpreter mit dem Befehl „exit“.