So steuern Sie den sudo-Zugriff unter Linux
Veröffentlicht: 2022-01-29 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 mit Granularität steuern, wer auf root's
zugreifen kann. Geben Sie Benutzern vollen Zugriff oder lassen Sie sie nur eine kleine Teilmenge von Befehlen verwenden. Wir zeigen Ihnen wie.
sudo- und Root-Berechtigungen
Wir haben alle gehört (die grobe Vereinfachung), dass alles in Linux eine Datei ist. In Wahrheit 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. Wenn möglich, folgt das Design von Linux und Unix-ähnlichen Betriebssystemen diesem Prinzip.
Das Konzept „Alles ist eine Datei“ ist in Linux weitreichend. Es ist also leicht zu erkennen, wie Dateiberechtigungen in Linux zu einer der Hauptstützen von Benutzerprivilegien und -rechten wurden. Wenn Sie eine Datei oder ein Verzeichnis (eine spezielle Art von Datei) besitzen, können Sie damit tun, was Sie möchten, einschließlich Bearbeiten, Umbenennen, Verschieben und Löschen. Sie können auch die Berechtigungen für die Datei festlegen, sodass andere Benutzer oder Benutzergruppen die Datei lesen, ändern oder ausführen können. Jeder unterliegt diesen Berechtigungen.
Alle außer dem Superuser, die als root
bekannt sind. Das root
Konto ist ein besonders privilegiertes Konto. Es ist nicht an die Berechtigungen für eines der 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's
Passwort hat, dasselbe tun. Sie könnten entweder böswillig oder versehentlich Chaos anrichten. Tatsächlich kann auch der root
Benutzer Chaos anrichten, indem er einen Fehler macht. Niemand ist unfehlbar. Es ist gefährliches Zeug.
Aus diesem Grund gilt es jetzt als bewährte Methode, sich überhaupt nicht als root
anzumelden. Melden Sie sich mit einem regulären Benutzerkonto an und verwenden Sie sudo
, um Ihre Berechtigungen für die kurze Dauer zu erhöhen, die Sie sie benötigen. Oft reicht das aus, um einen einzigen Befehl zu erteilen.
VERWANDT: Was bedeutet „Alles ist eine Datei“ unter Linux?
Die Sudoers-Liste
sudo
war bereits auf den Computern Ubuntu 18.04.3, Manjaro 18.1.0 und Fedora 31 installiert, die für die Recherche dieses Artikels verwendet wurden. Dies ist keine Überraschung. sudo
gibt es seit Anfang der 1980er Jahre und ist für fast alle Distributionen zum Standardmittel für den Superuser-Betrieb geworden.
Wenn Sie eine moderne Distribution installieren, wird der Benutzer, den Sie während der Installation erstellen, zu einer Benutzerliste namens sudoers hinzugefügt . Dies sind die Benutzer, die den Befehl sudo
verwenden können. Da Sie über sudo
-Befugnisse verfügen, können Sie diese verwenden, um andere Benutzer zur Liste der Sudoer hinzuzufügen.
Natürlich ist es leichtsinnig, den vollen Superuser-Status wohl oder übel oder an jemanden 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 das erreichen, 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. Sein Anwendungsbereich wurde jetzt erweitert, und Sie können sudo
verwenden, um einen Befehl auszuführen, als wären Sie ein beliebiger Benutzer. Es wurde umbenannt, um diese neue Funktionalität widerzuspiegeln. Es heißt jetzt „Ersatzbenutzer tun“.
Um sudo
zu verwenden, um einen Befehl als ein anderer Benutzer auszuführen, müssen wir die Option -u
(Benutzer) verwenden. Hier führen wir den Befehl whoami als Benutzer mary
aus. Wenn Sie den Befehl sudo
ohne die Option -u
verwenden, führen Sie den Befehl als root
.
Und weil 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 dessen Passwort zu kennen. Sie werden nach Ihrem eigenen Passwort gefragt. Wir müssen die Option -i
(Anmeldung) verwenden.
sudo -i -u Mary
pwd
Wer bin ich
ls-hl
Ausfahrt
Sie sind als mary
angemeldet. Die „.bashrc“-, „.bash_aliases“- und „.profile“-Dateien für das Mary-Benutzerkonto werden genauso verarbeitet, als ob sich der Inhaber des Mary-Benutzerkontos selbst angemeldet hätte.
- Die Eingabeaufforderung ändert sich, um anzuzeigen, dass es sich um eine Sitzung für das Benutzerkonto
mary
handelt. - Der Befehl
pwd
zeigt an, dass Sie sich jetzt inmary's
Home-Verzeichnis befinden. -
whoami
teilt uns mit, dass Sie das Benutzerkontomary
verwenden. - Die Dateien im Verzeichnis gehören zum Benutzerkonto
mary
. - Der
exit
Befehl bringt Sie zu Ihrer normalen Benutzerkontositzung zurück.
Bearbeiten der sudoers-Datei
Um Benutzer zur Liste der Personen hinzuzufügen, die sudo
verwenden können, müssen Sie die sudoers
-Datei bearbeiten. Es ist äußerst wichtig, dass Sie dies immer nur mit dem Befehl visudo
tun. Der Befehl visudo
verhindert, dass mehrere Personen gleichzeitig versuchen, die sudoers-Datei zu bearbeiten. Es führt auch eine Syntaxprüfung und Analyse des Dateiinhalts durch, während Sie ihn speichern.
Wenn Ihre Bearbeitungen 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 wird.
Obwohl Sie den Bearbeitungsprozess mit dem Befehl visudo
, ist visudo
kein Editor. Es ruft einen Ihrer vorhandenen Editoren auf, um die Dateibearbeitungen durchzuführen. Auf Manjaro und Ubuntu startete der Befehl visudo
den einfachen Editor nano
. Auf Fedora startete visudo
das leistungsfähigere – aber weniger intuitive – vim
.
VERWANDT: So beenden Sie den Vi- oder Vim-Editor
Wenn Sie es vorziehen, nano
auf Fedora zu verwenden, können Sie dies ganz einfach tun. Installieren Sie zuerst nano
:
sudo dnf install nano
Und dann musste visudo
mit diesem Befehl aufgerufen werden:
sudo EDITOR=nanovisudo
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 oder den oben beschriebenen Befehl, 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 am Anfang der Zeile eine Raute #
. Dadurch wird die Zeile zu einem Kommentar. Wenn dies der Fall ist, entfernen Sie den Hash und speichern Sie die Datei.
Die %sudo
-Zeile gliedert sich wie folgt:
- %sudo : Der Name der Gruppe.
- ALL= : Diese Regel gilt für alle Hosts in diesem Netzwerk.
- (ALL:ALL) : Mitglieder dieser Gruppe können Befehle als 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 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 denen sich das Benutzerkonto tom
bereits befindet. Ohne diese Option würde das Benutzerkonto tom
in die neue Gruppe gestellt, aber aus allen anderen Gruppen entfernt werden.
sudo usermod -a -G sudo tom
Sehen wir uns an, in welchen Gruppen Mary ist:
Gruppen
Das Benutzerkonto mary
befindet sich nur in der mary
-Gruppe.
Lassen Sie uns mit Tom nachfragen:
Gruppen
Das Benutzerkonto tom
– und damit Tom – befindet sich in den Gruppen tom
und sudo
.
Lassen Sie uns versuchen, Mary dazu zu bringen, etwas zu tun, das sudo
-Berechtigungen erfordert.
sudo weniger /etc/shadow
Mary kann nicht in die eingeschränkte Datei „/etc/shadow“ schauen. Sie bekommt eine milde Abmahnung, weil sie versucht hat, sudo
ohne Erlaubnis zu benutzen. Sehen wir uns an, wie Tom abschneidet:
sudo weniger /etc/shadow
Sobald Tom sein Passwort eingibt, wird ihm die Datei /etc/shadow angezeigt.
Allein dadurch, dass er der sudo
-Gruppe hinzugefügt wurde, wurde er in die Elite-Ränge derjenigen erhoben, die sudo
verwenden können. Völlig uneingeschränkt.
Benutzern eingeschränkte Sudo-Rechte geben
Tom hat volle sudo
-Rechte erhalten. Er kann alles tun, was root
– oder jeder andere in der sudo
-Gruppe – tun kann. Das könnte ihm mehr Macht verleihen, als Sie gerne abgeben würden. Manchmal muss ein Benutzer eine Funktion ausführen, die root
Rechte erfordert, aber es gibt keinen vertretbaren Grund dafür, dass er vollen sudo
Zugriff hat. Sie können dieses Gleichgewicht erreichen, indem Sie sie zur sudoers-Datei hinzufügen und die Befehle auflisten, die sie verwenden können.
Lernen wir Harry kennen, den Besitzer des Benutzerkontos harry
. Er ist nicht in der sudo
-Gruppe und hat keine sudo
-Berechtigungen.
Gruppen
Es ist nützlich für Harry, Software installieren zu können, aber wir wollen nicht, dass er volle sudo
-Rechte hat. Okay, kein Problem. Lassen Sie uns visudo
:
sudo-visudo
Scrollen Sie durch die Datei nach unten, bis Sie hinter die Gruppendefinitionen gelangen. 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 bedeutet, dass das Benutzerkonto harry
die aufgeführten Befehle auf allen mit diesem Netzwerk verbundenen Hosts verwenden kann. Es ist ein Befehl aufgeführt, der „/usr/bin/apt-get“ lautet. 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 zur 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 prü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
zum Installieren von Software zu verwenden, sollte aber abgelehnt werden, wenn er versucht, einen anderen Befehl zu verwenden, der sudo
erfordert.
sudo apt-get install finger
Die entsprechenden sudo
-Rechte wurden Harry gewährt und er kann die Software installieren.
Was passiert, wenn Harry versucht, einen anderen Befehl zu verwenden, der sudo
erfordert?
sudo wird jetzt heruntergefahren
Harry wird daran gehindert, den Befehl auszuführen. Wir haben ihm erfolgreich einen bestimmten, eingeschränkten Zugang gewährt. Er kann das nominierte Kommando verwenden und sonst nichts.
Verwenden von sudoers-Benutzeraliasen
Wenn wir Mary die gleichen Rechte geben wollen, könnten wir in der sudoers-Datei eine Zeile für das Benutzerkonto mary
hinzufügen, genau so wie wir es bei Harry getan haben. Ein anderer, saubererer Weg, dasselbe zu erreichen, ist die Verwendung eines User_Alias
.
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 alle diese Benutzerkonten darzustellen. Wenn Sie die Berechtigungen für diese Benutzerkonten ändern möchten, müssen Sie nur eine Zeile bearbeiten.
Lassen Sie uns einen User_Alias
erstellen und ihn in unserer sudoers-Datei verwenden.
sudo-visudo
Scrollen Sie in der Datei nach unten, bis Sie zur Spezifikationszeile User_Alias kommen.
Fügen Sie den User_Alias
, 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 einUser_Alias
sein wird. - INSTALLERS : 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
:
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 User_Alias „ 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, weil sie sich im User_Alias „ User_Alias
“ befindet und diesem User_Alias
diese Rechte zugesprochen wurden.
Drei schnelle Sudo-Tricks
Wenn Sie vergessen haben, sudo
zu einem Befehl hinzuzufügen, geben Sie ein
sudo !!
Und der letzte Befehl wird wiederholt, wobei sudo
am Anfang der Zeile hinzugefügt wird.
Sobald 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 sofort vergessen lassen 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:
weniger /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 shutdown
-Befehl 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.