So steuern Sie den sudo-Zugriff unter Linux

Veröffentlicht: 2022-01-29
Ein Linux-Terminalfenster auf einem Desktop im Ubuntu-Stil.
Fatmawati Achmad Zaenuri/Shutterstock

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.

Anzeige

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 .

Anzeige

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 in mary's Home-Verzeichnis befinden.
  • whoami teilt uns mit, dass Sie das Benutzerkonto mary 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.

Anzeige

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.

Nano-Editor mit darin geladener Sudoers-Datei

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.

Die sudoers-Datei mit hervorgehobener %sudo-Zeile

Anzeige

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 

Anzeige

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 

Anzeige

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.

sudoer-Dateieintrag für harry

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.

Anzeige

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 ein User_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.
Anzeige

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
Anzeige

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.