Fatmawati Achmad Zaenuri/Shutterstock
Der sudo
Mit Befehl können Sie Befehle unter Linux ausführen, als ob Sie jemand anderes wären, wie z root
. sudo
lässt Sie auch steuern, wer darauf zugreifen kann root's
Fähigkeiten, mit Granularität. 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 alles eine Datei ist, werden die meisten Betriebssystemobjekte behandelt. 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 bekannt ist als root
. Der 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 jeder mit Zugriff auf root's
Passwort kann das gleiche tun. Sie könnten böswillig oder versehentlich Schaden anrichten. Tatsächlich ist die root
Der Benutzer kann auch durch einen Fehler verheerende Schäden anrichten. Niemand ist unfehlbar. Es ist gefährliches Zeug.
Aus diesem Grund gilt es jetzt als bewährte Methode, sich anzumelden als root
überhaupt. Melden Sie sich mit einem regulären Benutzerkonto an und verwenden Sie sudo
zu 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
wurde 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 ist für fast alle Distributionen zum Standard für den Superuser-Betrieb geworden.
Wenn Sie eine moderne Distribution installieren, wird der Benutzer, den Sie während der Installation erstellen, einer Liste von Benutzern namens . Dies sind die Benutzer, die die sudo
Befehl. Weil du hast sudo
Sie können diese Befugnisse verwenden, um andere Benutzer zur Liste der Sudoers 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 festlegen, welche Befehle die verschiedenen Benutzer verwenden dürfen sudo
mit. 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. Sein Anwendungsbereich wurde jetzt erweitert, und Sie können verwenden sudo
um einen Befehl auszuführen, als ob Sie ein beliebiger Benutzer wären. Es wurde umbenannt, um diese neue Funktionalität widerzuspiegeln. Es heißt jetzt «Ersatzbenutzer tun».
Benutzen sudo
Um einen Befehl als ein anderer Benutzer auszuführen, müssen wir die -u
(Benutzer-)Option. Hier laufen wir die Wer bin ich Befehl als Benutzer mary
. Wenn Sie das verwenden sudo
Befehl ohne die -u
Option führen Sie den Befehl aus als root
.
Und natürlich, weil Sie verwenden sudo
Sie werden nach Ihrem Passwort gefragt.
sudo -u mary whoami

Die Antwort von whoami
teilt uns mit, dass das Benutzerkonto, das den Befehl ausführt, mary
.
Du kannst den … benutzen sudo
Befehl, sich als ein anderer Benutzer anzumelden, ohne sein Passwort zu kennen. Sie werden nach Ihrem eigenen Passwort gefragt. Wir müssen die verwenden -i
(Login)-Option.
sudo -i -u mary
pwd
whoami
ls -hl
exit

Du bist eingeloggt als mary
. 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 handelt
mary
.
- Der
pwd
Befehlsberichte, in denen Sie sich gerade befinden mary's
Home-Verzeichnis.
whoami
teilt uns mit, dass Sie ein Benutzerkonto verwenden mary
.
- Die Dateien im Verzeichnis gehören zu den
mary
Benutzerkonto.
- Der
exit
Befehl bringt dich zurück zu Ihre normale Benutzerkontositzung.
Bearbeiten der sudoers-Datei
So fügen Sie Benutzer zur Liste der Personen hinzu, die verwenden können sudo
, müssen Sie die bearbeiten sudoers
Datei. Es ist äußerst wichtig, dass Sie dies immer nur mit dem visudo
Befehl. Der visudo
-Befehl 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 Sie versehentlich von der Verwendung ausgeschlossen sind sudo
.
Obwohl Sie den Bearbeitungsvorgang mit der visudo
Befehl, visudo
ist kein Redakteur. Es ruft einen Ihrer vorhandenen Editoren auf, um die Dateibearbeitungen durchzuführen. Auf Manjaro und Ubuntu ist die visudo
Befehl gestartet der einfache Editor nano
. Auf Fedora, visudo
gestartet, desto fähiger—aber weniger intuitiv—vim
.
Wenn Sie es lieber verwenden möchten nano
auf Fedora können Sie dies ganz einfach tun. Zuerst installieren nano
:
sudo dnf install nano

Und dann visudo
musste mit diesem Befehl aufgerufen werden:
sudo EDITOR=nano visudo

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

Hinzufügen von Benutzern zur sudo-Gruppe
Benutzen 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 sehen %sudo
Eintrag.

Das Prozentzeichen zeigt an, dass es sich um eine Gruppendefinition und nicht um eine Benutzerdefinition handelt. Bei einigen Distributionen ist die %sudo
Zeile hat einen Hash #
am Anfang der Zeile. Dadurch wird die Zeile zu einem Kommentar. Entfernen Sie in diesem Fall den Hash und speichern Sie die Datei.
Der %sudo
Zeile gliedert sich wie folgt auf:
- %sudo: Der Name der Gruppe.
- ALLE=: Diese Regel gilt für alle Hosts in diesem Netzwerk.
- (ALLES ALLES): 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. Also eine einfache Möglichkeit, jemandem Root-Rechte und die Möglichkeit zu geben, zu verwenden sudo
, ist, sie dem hinzuzufügen sudo
Gruppe.
Wir haben zwei Benutzer, Tom und Mary, mit Benutzerkonten tom
und mary
bzw. Wir werden ein Benutzerkonto hinzufügen tom
zum sudo
Gruppe mit dem usermod
Befehl. Der -G
(Gruppen) Option gibt die Gruppe an, die wir hinzufügen werden tom
Konto zu. Der -a
(anhängen) Option diese Gruppe an die Liste der Gruppen das Benutzerkonto tom
ist bereits in. Ohne diese Option wird 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 mary
Gruppe.
Schauen wir bei Tom nach:
groups

Der tom
Benutzerkonto – und damit Tom – ist in den Gruppen tom
und sudo
.
Lass uns versuchen, Mary dazu zu bringen, etwas zu tun, was es erfordert sudo
Privilegien.
sudo less /etc/shadow

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

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

Einfach indem du ihn zum hinzufügst sudo
Gruppe, er wurde in die Elite derjenigen erhoben, die es können benutzen sudo
. Völlig uneingeschränkt.
Benutzern eingeschränkte sudo-Rechte gewähren
Tom wurde voll gegeben sudo
Rechte. Er kann alles, was root
– oder irgendjemand sonst in der sudo
Gruppe – kann. Das könnte ihm mehr Macht verleihen, als Sie ihm gerne überlassen. Manchmal muss ein Benutzer eine Funktion ausführen, die erfordert root
Privilegien, aber es gibt keinen gerechtfertigten Grund, sie voll zu haben sudo
Zugriff. 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 er hat keine sudo
Privilegien.
groups

Es ist nützlich für Harry, Software installieren zu können, aber wir möchten nicht, dass er voll ist sudo
Rechte. Okay, kein Problem. lass uns anfeuern visudo
:
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 Definition 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 noch einmal überprüfen möchten, ob die Zeile syntaktisch korrekt ist, können wir fragen visudo
um die Datei zu scannen und die Syntax für uns zu überprüfen, indem Sie die -c
(nur ankreuzen) Option:
sudo visudo -c

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

Der angemessene sudo
Harry wurden Rechte eingeräumt und er kann die Software installieren.
Was passiert, wenn Harry versucht, einen anderen Befehl zu verwenden, der erfordert sudo
?
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 möchten, könnten wir eine Zeile in der sudoers-Datei für das Benutzerkonto hinzufügen mary
genauso wie wir es mit Harry gemacht haben. Eine andere, sauberere Möglichkeit, dasselbe zu erreichen, ist die Verwendung von a User_Alias
.
in der sudoers-Datei, a User_Alias
enthält 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.
Lass uns eine erstellen User_Alias
und verwenden Sie es in unserer sudoers-Datei.
sudo visudo

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

Ergänzen Sie die User_Alias
durch Eingabe von:
User_Alias INSTALLERS = harry, mary
Jedes Element wird durch ein Leerzeichen getrennt, nicht durch einen Tabulator. Die Logik gliedert sich wie folgt:
- User_Alias: Das sagt
visudo
das wird ein User_Alias
.
- INSTALLATEUR: Dies ist ein willkürlicher Name für diesen Alias.
- = Harry, Maria: Die Liste der Benutzer, die in diesen Alias aufgenommen werden sollen.
Jetzt bearbeiten wir die Zeile, die wir zuvor für das Benutzerkonto hinzugefügt haben 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 „INSTALLERS“ enthalten sind, User_Alias
kann das laufen lassen apt-get
Befehl. 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 in den „INSTALLERN“ befindet. User_Alias
, und das User_Alias
wurden diese Rechte zuerkannt.
Drei schnelle Sudo-Tricks
Wenn du vergisst hinzuzufügen sudo
zu einem Befehl geben Sie ein
sudo !!
Und der letzte Befehl wird wiederholt mit sudo
an den Zeilenanfang angehängt.
Sobald Sie verwendet haben sudo
und mit Ihrem Passwort authentifiziert, müssen Sie Ihr Passwort nicht weiter verwenden sudo
Befehle für 15 Minuten. Wenn Sie Ihre Authentifizierung gleich vergessen haben möchten, verwenden Sie:
sudo -k
Haben Sie sich jemals gefragt, wo Sie Fehler sehen können? sudo
Befehlsversuche? 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 eingeloggt war, als sie versuchte, das zu starten shutdown
Befehl als Benutzer „root“.
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.