So steuern Sie den sudo-Zugriff unter Linux

Mit dem Befehl sudo können Sie Befehle unter Linux ausführen, als wären Sie jemand anderes, z. B. root. Mit sudo können Sie auch detailliert steuern, wer auf die Fähigkeiten von Root zugreifen kann. Gewähren Sie Benutzern vollen Zugriff oder lassen Sie sie eine kleine Teilmenge von Befehlen verwenden. Wir zeigen Ihnen wie.

sudo und Root-Berechtigungen

Wir haben alle gehört (die Vereinfachung), dass alles in Linux eine Datei ist. Tatsächlich kommuniziert praktisch alles im Betriebssystem von Prozessen, Dateien, Verzeichnissen, Sockets und Pipes über einen Dateideskriptor mit dem Kernel. Obwohl also nicht alles eine Datei ist, werden die meisten Betriebssystemobjekte so behandelt, als ob sie es wären. Das Design von Linux- und Unix-ähnlichen Betriebssystemen folgt nach Möglichkeit diesem Prinzip.

Das Konzept „Alles ist eine Datei“ ist in Linux weitreichend. Es ist dann leicht zu sehen, wie Dateiberechtigungen in Linux zu einer der tragenden Säulen von Benutzerrechten und -rechten wurden. Wenn Sie eine Datei oder ein Verzeichnis (eine besondere Art von Datei) besitzen, können Sie damit machen, was Sie wollen, einschließlich Bearbeiten, Umbenennen, Verschieben und Löschen. Sie können auch die Berechtigungen für die Datei festlegen, damit andere Benutzer oder Benutzergruppen die Datei lesen, ändern oder ausführen können. Jeder unterliegt diesen Berechtigungen.

Jeder, der außer dem Superuser als Root bezeichnet wird. Das Root-Konto ist ein besonders privilegiertes Konto. Es ist nicht an die Berechtigungen für die Objekte im Betriebssystem gebunden. Der Root-Benutzer kann alles mit allem machen und so ziemlich zu jeder Zeit.

Natürlich kann jeder, der Zugriff auf das Root-Passwort hat, dasselbe tun. Sie könnten böswillig oder versehentlich Schaden anrichten. Tatsächlich kann der Root-Benutzer auch durch einen Fehler verheerende Schäden anrichten. Niemand ist unfehlbar. Es ist gefährliches Zeug.

Aus diesem Grund gilt es mittlerweile als bewährtes Verfahren, sich überhaupt nicht als Root anzumelden. Melden Sie sich mit einem normalen Benutzerkonto an und verwenden Sie sudo, um Erhöhen Sie Ihre Privilegien für die kurze Dauer du brauchst sie. Oftmals besteht dies nur darin, einen einzigen Befehl auszugeben.

Die Sudoers-Liste

sudo war bereits auf den Computern Ubuntu 18.04.3, Manjaro 18.1.0 und Fedora 31 installiert, auf denen dieser Artikel recherchiert wurde. Dies ist keine Überraschung. sudo gibt es seit den frühen 1980er Jahren und hat sich für fast alle Distributionen zum Standard für den Superuser-Betrieb entwickelt.

Wenn Sie eine moderne Distribution installieren, wird der Benutzer, den Sie während der Installation erstellen, zu einer Liste von Benutzern namens sudoers hinzugefügt. Dies sind die Benutzer, die den Befehl sudo verwenden können. Da Sie über Sudo-Berechtigungen verfügen, können Sie diese verwenden, um andere Benutzer zur Liste der Sudoer hinzuzufügen.

Natürlich ist es rücksichtslos, den vollen Superuser-Status willentlich oder an jeden zu vergeben, der nur einen teilweisen oder spezifischen Bedarf hat. In der Sudoers-Liste können Sie angeben, mit welchen Befehlen die verschiedenen Benutzer sudo verwenden dürfen. Auf diese Weise gibst du ihnen nicht die Schlüssel zum Königreich, aber sie können trotzdem tun, was sie tun müssen.

Ausführen eines Befehls als anderer Benutzer

Ursprünglich hieß es „Superuser do“, weil man als Superuser Dinge tun konnte. Der Umfang wurde jetzt erweitert, und Sie können mit sudo einen Befehl ausführen, als ob Sie ein beliebiger Benutzer wären. Es wurde umbenannt, um diese neue Funktionalität widerzuspiegeln. Es heißt jetzt „Ersatzbenutzer tun“.

  So passen Sie den Deepin Linux-Desktop an

Um sudo zu verwenden, um einen Befehl als ein anderer Benutzer auszuführen, müssen wir die Option -u (Benutzer) verwenden. Hier laufen wir die Wer bin ich Befehl als Benutzer mary. Wenn Sie den Befehl sudo ohne die Option -u verwenden, führen Sie den Befehl als Root aus.

Da Sie sudo verwenden, werden Sie natürlich nach Ihrem Passwort gefragt.

sudo -u mary whoami

Die Antwort von whoami sagt uns, dass das Benutzerkonto, das den Befehl ausführt, mary ist.

Sie können den Befehl sudo verwenden, um sich als ein anderer Benutzer anzumelden, ohne sein Passwort zu kennen. Sie werden nach Ihrem eigenen Passwort gefragt. Wir müssen die Option -i (Login) verwenden.

sudo -i -u mary
pwd
whoami
ls -hl
exit

Sie sind als Maria angemeldet. Die Dateien „.bashrc“, „.bash_aliases“ und „.profile“ für das mary-Benutzerkonto werden genau so verarbeitet, als ob sich der Inhaber des mary-Benutzerkontos selbst eingeloggt hätte.

Die Eingabeaufforderung ändert sich, um anzuzeigen, dass es sich um eine Sitzung für das Benutzerkonto Mary handelt.
Der pwdcommand gibt wieder, dass Sie sich jetzt in Marys befinden Home-Verzeichnis.
whoami teilt uns mit, dass Sie das Benutzerkonto Mary verwenden.
Die Dateien im Verzeichnis gehören zum Mary-Benutzerkonto.
Der Exit-Befehl führt Sie zurück zu Ihre normale Benutzerkontositzung.

Bearbeiten der sudoers-Datei

Um Benutzer zur Liste der Personen hinzuzufügen, die sudo verwenden können, müssen Sie die Datei sudoers bearbeiten. Es ist äußerst wichtig, dass Sie dies immer nur mit dem visudo-Befehl tun. Der Befehl visudo verhindert, dass mehrere Personen gleichzeitig versuchen, die sudoers-Datei zu bearbeiten. Es auch führt Syntaxprüfung und Parsing durch auf den Dateiinhalt, während Sie ihn speichern.

Wenn Ihre Änderungen die Tests nicht bestehen, wird die Datei nicht blind gespeichert. Sie erhalten Optionen. Sie können die Änderungen abbrechen und verwerfen, zurückgehen und die Änderungen erneut bearbeiten oder das Speichern der falschen Änderungen erzwingen. Die letzte Option ist eine ernsthaft schlechte Idee. Lassen Sie sich nicht dazu verleiten. Sie können sich in einer Situation wiederfinden, in der jeder versehentlich von der Verwendung von sudo ausgeschlossen ist.

Obwohl Sie den Bearbeitungsvorgang mit dem Befehl visudo starten, ist visudo kein Editor. Es ruft einen Ihrer vorhandenen Editoren auf, um die Dateibearbeitungen durchzuführen. Auf Manjaro und Ubuntu wurde der Befehl visudo gestartet der einfache Editor nano. Auf Fedora hat visudo das leistungsfähigere herausgebracht –aber weniger intuitiv-vim.

Wenn Sie nano lieber auf Fedora verwenden möchten, können Sie dies ganz einfach tun. Installieren Sie zunächst nano:

sudo dnf install nano

Und dann musste visudo mit diesem Befehl aufgerufen werden:

sudo EDITOR=nano visudo

Das sieht nach einem guten Kandidaten für einen Alias ​​aus. Der Nano-Editor wird mit der darin geladenen sudoers-Datei geöffnet.

Hinzufügen von Benutzern zur sudo-Gruppe

Verwenden Sie visudo, um die sudoers-Datei zu öffnen. Verwenden Sie entweder diesen Befehl oder den oben beschriebenen, um den Editor Ihrer Wahl anzugeben:

sudo visudo

Scrollen Sie durch die sudoers-Datei, bis Sie die Definition des %sudo-Eintrags sehen.

Das Prozentzeichen zeigt an, dass es sich um eine Gruppendefinition und nicht um eine Benutzerdefinition handelt. Bei einigen Distributionen hat die %sudo-Zeile eine Raute # am Anfang der Zeile. Dadurch wird die Zeile zu einem Kommentar. Entfernen Sie in diesem Fall den Hash und speichern Sie die Datei.

Die Zeile %sudo gliedert sich wie folgt auf:

  So installieren Sie die UKUI-Desktopumgebung unter Linux

%sudo: Der Name der Gruppe.
ALL=: Diese Regel gilt für alle Hosts in diesem Netzwerk.
(ALL:ALL): Mitglieder dieser Gruppe können Befehle wie alle Benutzer und alle Gruppen ausführen.
Alle: Mitglieder dieser Gruppe können alle Befehle ausführen.

Um das etwas anders zu formulieren: Mitglieder dieser Gruppe können jeden Befehl als jeder Benutzer oder jede beliebige Gruppe auf diesem Computer oder auf jedem anderen Host in diesem Netzwerk ausführen. Eine einfache Möglichkeit, jemandem Root-Rechte und die Möglichkeit zu geben, sudo zu verwenden, besteht darin, ihn der sudo-Gruppe hinzuzufügen.

Wir haben zwei Benutzer, Tom und Mary, mit den Benutzerkonten Tom bzw. Mary. Wir fügen das Benutzerkonto tom mit dem Befehl usermod zur sudo-Gruppe hinzu. Die Option -G (Gruppen) gibt die Gruppe an, zu der wir das Tom-Konto hinzufügen werden. Die Option -a (append) fügt diese Gruppe der Liste der Gruppen hinzu, in der sich das Benutzerkonto tom bereits befindet. Ohne diese Option würde das Benutzerkonto tom in die neue Gruppe eingefügt, aber aus allen anderen Gruppen entfernt.

sudo usermod -a -G sudo tom

Sehen wir uns an, zu welchen Gruppen Mary gehört:

groups

Das Benutzerkonto mary ist nur in der Gruppe mary.

Schauen wir bei Tom nach:

groups

Das Tom-Benutzerkonto – und damit Tom – befindet sich in den Gruppen tom und sudo.

Versuchen wir, Mary dazu zu bringen, etwas zu tun, das Sudo-Privilegien erfordert.

sudo less /etc/shadow

Mary kann nicht in die eingeschränkte Datei „/etc/shadow“ schauen. Sie bekommt eine milde Anschuldigung, weil sie versucht hat, sudo ohne Erlaubnis zu verwenden. So geht es Tom:

sudo less /etc/shadow

Sobald Tom sein Passwort eingibt, wird ihm die Datei /etc/shadow angezeigt.

Allein durch die Aufnahme in die Sudo-Gruppe wurde er in die Elite derjenigen erhoben, die Sudo verwenden können. Völlig uneingeschränkt.

Benutzern eingeschränkte sudo-Rechte gewähren

Tom hat volle Sudo-Rechte. Er kann alles tun, was root – oder jeder andere in der Sudo-Gruppe – tun kann. Das könnte ihm mehr Macht verleihen, als Sie ihm gerne überlassen. Manchmal muss ein Benutzer eine Funktion ausführen, die Root-Rechte erfordert, aber es gibt keinen gerechtfertigten Fall, dass er vollen sudo-Zugriff hat. Sie können dieses Gleichgewicht erreichen, indem Sie sie der sudoers-Datei hinzufügen und die Befehle auflisten, die sie verwenden können.

Treffen wir Harry, den Besitzer des Benutzerkontos Harry. Er ist nicht in der Sudo-Gruppe und hat keine Sudo-Berechtigungen.

groups

Es ist nützlich für Harry, Software installieren zu können, aber wir möchten nicht, dass er die vollen Sudo-Rechte hat. Okay, kein Problem. lass uns visudo starten:

sudo visudo

Scrollen Sie nach unten durch die Datei, bis Sie an den Gruppendefinitionen vorbeikommen. Wir werden eine Zeile für Harry hinzufügen. Da dies eine Benutzerdefinition und keine Gruppendefinition ist, müssen wir die Zeile nicht mit einem Prozentzeichen beginnen.

Der Eintrag für das Benutzerkonto harry lautet:

harry    ALL=/usr/bin/apt-get

Beachten Sie, dass sich zwischen „harry“ und „ALL=“ ein Tabulator befindet.

Dies liest sich als Benutzerkonto Harry kann die aufgelisteten Befehle auf allen Hosts verwenden, die mit diesem Netzwerk verbunden sind. Es ist ein Befehl aufgeführt, der „/usr/bin/apt-get“ ist. Wir können Harry Zugriff auf mehr als einen Befehl gewähren, indem wir sie durch Kommas getrennt zur Befehlsliste hinzufügen.

Fügen Sie die Zeile der sudoers-Datei hinzu und speichern Sie die Datei. Wenn Sie überprüfen möchten, ob die Zeile syntaktisch korrekt ist, können wir visudo bitten, die Datei zu scannen und die Syntax für uns zu überprüfen, indem Sie die Option -c (nur überprüfen) verwenden:

sudo visudo -c

Die Kontrollen finden statt und visudo meldet, dass alles in Ordnung ist. Harry sollte jetzt in der Lage sein, apt-get zu verwenden Software installieren sollte jedoch abgelehnt werden, wenn er versucht, einen anderen Befehl zu verwenden, der sudo erfordert.

sudo apt-get install finger

Harry wurden die entsprechenden Sudo-Rechte eingeräumt und er kann die Software installieren.

  So verwenden Sie curl zum Herunterladen von Dateien von der Linux-Befehlszeile

Was passiert, wenn Harry versucht, einen anderen Befehl zu verwenden, der sudo erfordert?

sudo shutdown now

Harry wird daran gehindert, den Befehl auszuführen. Wir haben ihm erfolgreich einen bestimmten, eingeschränkten Zugang gewährt. Er kann den nominierten Befehl verwenden und sonst nichts.

Verwenden von sudoers-Benutzeraliasen

Wenn wir Mary die gleichen Privilegien geben wollen, könnten wir eine Zeile in der sudoers-Datei für das Benutzerkonto mary hinzufügen, genau wie wir es bei Harry gemacht haben. Eine andere, sauberere Möglichkeit, dasselbe zu erreichen, besteht darin, einen User_Alias ​​zu verwenden.

in der sudoers-Datei enthält ein User_Alias ​​eine Liste von Benutzerkontonamen. Der Name des User_Alias ​​kann dann in einer Definition verwendet werden, um all diese Benutzerkonten darzustellen. Wenn Sie die Berechtigungen für diese Benutzerkonten ändern möchten, müssen Sie nur eine Zeile bearbeiten.

Erstellen wir einen User_Alias ​​und verwenden ihn in unserer sudoers-Datei.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


Fügen Sie den User_Alias ​​hinzu, indem Sie Folgendes eingeben:

User_Alias INSTALLERS = harry, mary

Jedes Element wird durch ein Leerzeichen getrennt, nicht durch einen Tabulator. Die Logik gliedert sich wie folgt:

User_Alias: Dies teilt Visudo mit, dass dies ein User_Alias ​​sein wird.
INSTALLATEUR: Dies ist ein willkürlicher Name für diesen Alias.
= harry, mary: Die Liste der Benutzer, die in diesen Alias ​​aufgenommen werden sollen.

Jetzt bearbeiten wir die Zeile, die wir zuvor für das Benutzerkonto harry hinzugefügt haben:

harry    ALL=/usr/bin/apt-get

Ändern Sie es so, dass es lautet:

INSTALLERS    ALL=/usr/bin/apt-get

Dies besagt, dass alle Benutzerkonten, die in der Definition des „INSTALLERS“ User_Alias ​​enthalten sind, den Befehl apt-get ausführen können. Wir können dies mit Mary testen, die nun in der Lage sein sollte, Software zu installieren.

sudo apt-get install colordiff

Mary kann die Software installieren, da sie sich im User_Alias ​​„INSTALLERS“ befindet und diesem User_Alias ​​diese Rechte zuerkannt wurden.

Drei schnelle Sudo-Tricks

Wenn Sie vergessen, einem Befehl sudo hinzuzufügen, geben Sie ein

sudo !!

Und der letzte Befehl wird mit sudo am Anfang der Zeile wiederholt.

Nachdem Sie sudo verwendet und sich mit Ihrem Passwort authentifiziert haben, müssen Sie Ihr Passwort 15 Minuten lang nicht mit weiteren sudo-Befehlen verwenden. Wenn Sie Ihre Authentifizierung gleich vergessen haben möchten, verwenden Sie:

sudo -k

Haben Sie sich jemals gefragt, wo Sie fehlgeschlagene Sudo-Befehlsversuche sehen können? Sie gehen in die Datei „/var/log/auth.log“. Sie können es anzeigen mit:

less /var/log/auth.log

Wir können den Eintrag für das Benutzerkonto mary sehen, die bei TTY pts/1 angemeldet war, als sie versuchte, den Befehl zum Herunterfahren als Benutzer „root“ auszuführen.

Mit großer Kraft…

…kommt die Fähigkeit, Teile davon an andere zu delegieren. Jetzt wissen Sie, wie Sie andere Benutzer gezielt befähigen können.