Unterschied zwischen Sudo-Benutzer und Root-Benutzer

Unterschied zwischen Sudo-Benutzer und Root-Benutzer

Die Datei listet auf, welche Benutzer was mit dem Befehl /etc/sudoerstun könnensudo

Der Root-Benutzer erstellt und ändert die /etc/sudoersDatei.

Dieses Konzept ist für mich schwer zu verstehen.

Wenn alle Benutzer mit Sudo-Berechtigungen zur sudoersGruppe gehören, können alle durch Eingeben des sudo suBefehls Root werden.

Wer ist dann der eigentliche Root-Benutzer und wie kontrolliert er die Berechtigungen der Benutzer in der Sudoers-Gruppe?

Bitte erklären Sie es mir.

Antwort1

Zusammenfassung: „root“ ist der eigentliche Name des Administratorkontos. „sudo“ ist ein Befehl, mit dem normale Benutzer Verwaltungsaufgaben ausführen können. „Sudo“ ist kein Benutzer.


Lange Antwort:

„root“ (auch „Superuser“ genannt) ist der Name des Systemadministratorkontos. Der Ursprung des Namens ist etwas archaisch, aber das spielt keine Rolle.

Der Root-Benutzer hat die Benutzer-ID 0 und verfügt nominell über unbegrenzte Berechtigungen. Root kann auf jede Datei zugreifen, jedes Programm ausführen, jeden Systemaufruf ausführen und jede Einstellung ändern. (Siehe jedoch unten¹).

Vor der Erfindung des Befehls „sudo“ mussten Sie sich als Root anmelden, wenn Sie Verwaltungsaufgaben ausführen wollten, entweder indem Sie irgendwie eine Anmeldeaufforderung² erhielten oder mit dem suBefehl („su“ ist die Abkürzung für „Substitute User“)³.

Das ist etwas umständlich und ermöglicht es Ihnen auch nicht, Benutzern teilweise Verwaltungsrechte zu erteilen. Daher wurde der Befehl „sudo“ (kurz für „substitute user do“) erfunden.

Mit dem Befehl „sudo“ können Sie Befehle mit Superuser-Rechten ausführen, solange Ihre Benutzer-ID in der sudoers-Datei enthalten ist und Ihnen die erforderliche Berechtigung erteilt.

So sudo vi /etc/hostskönnten Sie beispielsweise die Hosts-Datei so bearbeiten, als ob Sie als Root arbeiten würden. Sie benötigen nicht einmal das Root-Passwort, sondern nur Ihr eigenes Anmeldepasswort.

Und natürlich sudo sukönnen Sie damit einfach Root werden. Das Ergebnis ist dasselbe, als ob Sie sich als Root angemeldet oder den suBefehl ausgeführt hätten, außer dass Sie das Root-Passwort nicht kennen müssen, aber in der sudoers-Datei sein müssen.

Die sudoers-Datei bestimmt, wer den sudo-Befehl verwenden kann und was er damit tun kann.

Die sudoers-Datei gibt Ihnen mehrere Administratoren⁴. Ihre Administratoren sind effektiv root und alle in der sudoers-Datei aufgeführten Personen. Ohne die sudoers-Datei ist root der einzige Administrator.

Tatsächlich kommt es in Organisationen, in denen jemand anderes Ihren Computer für Sie verwaltet, recht häufig vor, dass Sie das Root-Passwort Ihres eigenen Computers nicht kennen – solange Sie sich in der sudoers-Datei befinden, spielt das keine Rolle.

Bei einer Firma, für die ich arbeitete und die eine riesige Serverfarm hatte, kannte nur eine sehr, sehr kleine Anzahl von Leuten die Root-Passwörter. Stattdessen gab es eine Datenbank, in der stand, wer auf welchen Servern arbeiten durfte. Ein automatisierter Prozess fügte Sie zu den Sudoers-Dateien der Server hinzu, auf die Sie Zugriff hatten, und entfernte Sie wieder, wenn Ihre Berechtigung ablief.


¹ Noch etwas: Moderne Unix-Versionen können mittlerweile sogar die Möglichkeiten des Root-Benutzers einschränken.

UnterSELinux(Security Enhanced Linux) gibt es effektiv eine Zugriffskontrollliste, die bestimmt, welches Programm was tun kann, und nicht einmal Root kann diese Einschränkungen umgehen.

Unter ApplesSchutz der Systemintegrität(SIP) (auch als „rootless“ bezeichnet) System werden bestimmte Dateien und Verzeichnisse gesperrt, sodass nur Anwendungen auf der entsprechenden Whitelist auf sie zugreifen können.

Diese Systeme dienen dazu, ein System vor dem Fall zu schützen, dass ein böswilliger Benutzer Root-Zugriff erhält. (Oder in manchen Fällen, um zu verhindern, dass Benutzer ihre eingebetteten Geräte jailbreaken.) Aus offensichtlichen Gründen ist es extrem schwierig, diese Beschränkungen zu umgehen, selbst mit Root-Zugriff.

² Die Eingabeaufforderung „login:“ ist ein weiteres archaisches Stück Unix-Geschichte, das auf die Zeit zurückgeht, als wir alle ASCII-Terminals mit seriellen Leitungen statt Fenstersystemen verwendeten. Sie können immer noch eine Eingabeaufforderung „login:“ erhalten, indem Sie einfach loginin ein beliebiges Terminalfenster tippen oder indem Sie von einem anderen Ort aus eine SSH- (oder Telnet- oder RSH-)Verbindung zu Ihrem Computer öffnen. Sie könnten sich von dort aus als anderer Benutzer anmelden, wenn Sie wollten. (Und wenn Ihr Computer zufällig über serielle Schnittstellen verfügt, können Sie ihn immer noch so konfigurieren, dass Anmeldungen über diese Schnittstellen möglich sind.)

³ Es ist auch möglich, einzelnen Programmen Root-Zugriff zu gewähren. Diese Programme können alles tun, was ein Benutzer mit Root-Zugriff tun kann, auch wenn sie von einem normalen Benutzer ausgeführt werden. Diese sind normalerweise auf bestimmte Aufgaben beschränkt. Zum Beispiel diecrontabDas Programm hat Root-Rechte, damit es die Cron-Tabellen bearbeiten kann. Offensichtlich hat „sudo“ Root-Rechte, damit es tun kann, was es tut.

⁴ Ich werde noch einen weiteren Punkt ansprechen, den ich zuvor übergangen habe. Ich habe „Administrator“ und „Root“ synonym verwendet, aber es gibt noch andere Arten von Administratoren. Diese werden oft als „Rollenkonten“ bezeichnet, was bedeutet, dass diese Konten nicht echten Menschen gehören, sondern existieren, um eine bestimmte Rolle im System auszuführen. Wenn Sie sich die /etc/passwdDatei auf Ihrem System ansehen, werden Sie Dutzende und Aberdutzende solcher Konten finden.

Wenn beispielsweise MySQL auf Ihrem System installiert wäre, gäbe es einen „MySQL“-Benutzer und alle Datenbankdateien, Konfigurationsdateien usw. wären Eigentum dieses Benutzers. Nur dieser Benutzer (und natürlich Root) hätte die erforderlichen Berechtigungen, um auf die Dateien zuzugreifen und den MySQL-Server auszuführen. In gewisser Weise wäre dieser Benutzer ein Administratorkonto, aber nur für MySQL.

Wenn Sie Datenbankverwaltungsaufgaben durchführen müssen, werden Sie mit dem su mysqlBefehl entweder zu „mysql“ oder verwenden sudodie Datei sudoers, die Ihnen MySQL-Berechtigungen für diese speziellen Befehle erteilt.

verwandte Informationen