Unterschied zwischen Sudo-Benutzer und Root-Benutzer [geschlossen]

21

Die /etc/sudoersDatei listet auf, welche Benutzer was mit dem sudoBefehl tun können

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

Dieses Konzept ist für mich schwer zu verstehen.

Wenn alle Benutzer mit sudo-Berechtigung zu einer sudoersGruppe gehören, können alle Benutzer mit dem sudo suBefehl root werden .

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

Bitte erklären Sie es mir.

Rancho
quelle
4
Ich denke, Sie müssen herausfinden, welcher Teil schwer zu verstehen ist.
garethTheRed
Wer ist Root-Benutzer? Diese Frage ist für mich schwer zu verstehen. Weil Humn-Benutzer nur zur Sudoer-Gruppe gehen können
Rancho
@ Rancho aktualisieren Sie die Frage, bitte
Peterph
1
Versuchen Sie unix.stackexchange.com/questions/159614/…
garethTheRed
Einfache Antwort auf Ihre zugrunde liegende Frage (basierend auf Kommentaren zur Antwort): Es ist richtig, dass der Unterschied zwischen rootZugriff und sudoRechten irrelevant wird, wenn Sie zulassen sudo su, dass sie ausgeführt werden. Das müssen Sie jedoch nicht zulassen. Sie können nur einen bestimmten Befehlssatz zulassen, z. B. Ihrem Junior-Sysadmin sudonur Zugriff auf bestimmte Sicherungsbefehle gewähren .
Wildcard

Antworten:

29

Zusammenfassung: "root" ist der tatsächliche Name des Administratorkontos. "sudo" ist ein Befehl, mit dem normale Benutzer administrative Aufgaben ausführen können. "Sudo" ist kein Benutzer.


Lange Antwort:

"root" (auch "Superuser" genannt) ist der Name des Systemadministratorkontos. Die Ursprünge des Namens sind ein wenig archaisch, aber das spielt keine Rolle.

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

Vor der Erfindung des Befehls "sudo" mussten Sie sich als root anmelden, um administrative Aufgaben ausführen zu können, entweder indem Sie eine Anmeldeaufforderung² erhalten oder mit dem suBefehl ("su" steht für "substitute user".) ³

Das ist ein bisschen mühsam und lässt Sie Benutzern auch keine teilweisen Verwaltungsbefugnisse erteilen. So wurde der Befehl "sudo" (kurz für "Ersatzbenutzer do") erfunden.

Mit dem Befehl "sudo" können Sie Befehle mit Superuser-Rechten ausführen, solange sich Ihre Benutzer-ID in der sudoers-Datei befindet, wodurch Sie die erforderliche Berechtigung erhalten.

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

Und sudo suwürde es Ihnen natürlich erlauben, einfach root zu werden. Das Ergebnis ist dasselbe, als hätten Sie sich als root angemeldet oder den suBefehl ausgeführt, mit der Ausnahme, dass Sie das root-Passwort nicht kennen müssen, sich jedoch in der sudoers-Datei befinden müssen.

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

Die sudoers-Datei bietet Ihnen mehrere Administratoren. Tatsächlich sind Ihre Administratoren root und alle in der sudoers-Datei aufgeführten. Ohne die sudoers-Datei ist der einzige Administrator root.

In Organisationen, in denen jemand anders Ihren Computer für Sie verwaltet, ist es durchaus üblich, das Root-Kennwort Ihres eigenen Computers nicht zu kennen - solange Sie sich in der sudoers-Datei befinden, spielt dies keine Rolle.

In einer Firma, für die ich gearbeitet habe, kannten mit einer riesigen Serverfarm nur sehr wenige Leute die Root-Passwörter. Stattdessen gab es eine Datenbank darüber, wer auf welchen Servern arbeiten durfte. Ein automatisierter Prozess fügt Sie zu den sudoers-Dateien der Server hinzu, auf die Sie zugreifen dürfen, und entfernt Sie, wenn Ihre Autorisierung abgelaufen ist.


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

Unter SELinux (Security Enhanced Linux) gibt es effektiv eine Zugriffssteuerungsliste, die festlegt, welches Programm was kann, und selbst root kann diese Einschränkungen nicht umgehen.

Unter dem System System Integrity Protection (SIP) von Apple (auch als "rootless" bezeichnet) sind bestimmte Dateien und Verzeichnisse gesperrt, sodass nur Anwendungen auf der entsprechenden Whitelist darauf zugreifen können.

Diese Systeme schützen ein System vor dem Fall, dass ein böswilliger Benutzer Root-Zugriff erhält. (Oder in einigen Fällen, um zu verhindern, dass Benutzer ihre eingebetteten Geräte einem Jailbreak unterziehen.) Aus offensichtlichen Gründen ist es äußerst schwierig, diese Einschränkungen zu umgehen, selbst wenn der Root-Zugriff besteht.

² Die Eingabeaufforderung "login:" ist ein weiteres archaisches Stück der Unix-Geschichte, das auf die Zeit zurückgeht, als wir alle ASCII-Terminals auf seriellen Leitungen anstelle von Fenstersystemen verwendeten. Sie können immer noch eine "Login:" - Eingabeaufforderung erhalten, indem Sie einfach loginein Terminalfenster eingeben oder von einem anderen Ort aus eine ssh- (oder telnet- oder rsh-) Verbindung zu Ihrem Computer herstellen. Sie können sich von dort aus als ein anderer Benutzer anmelden. (Und wenn Ihr Computer über serielle Anschlüsse verfügt, können Sie ihn trotzdem so konfigurieren, dass Anmeldungen möglich sind.)

³ Es ist auch möglich, einzelnen Programmen Root-Zugriff zu gewähren. Diese Programme können alle Aktionen ausführen, die ein Benutzer mit Root-Zugriff ausführen kann, auch wenn sie von einem normalen Benutzer ausgeführt werden. Diese sind normalerweise auf bestimmte Aufgaben beschränkt. Das Programm crontab verfügt beispielsweise über Root-Berechtigungen, damit es die Cron-Tabellen bearbeiten kann. Offensichtlich hat "sudo" root-Rechte, damit es das tun kann, was es tut.

⁴ Ich werde noch einen Punkt behandeln, den ich vorher beschönigt habe. Ich habe "Administrator" und "Root" synonym verwendet, aber es gibt andere Arten von Administratoren. Diese Konten werden oft als "Rollenkonten" bezeichnet, dh, sie gehören nicht zu tatsächlichen Menschen, sondern sind vorhanden, um eine bestimmte Rolle auf dem System zu übernehmen. Wenn Sie sich die /etc/passwdDatei auf Ihrem System ansehen , werden Sie Dutzende 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 verfügt über 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 Datenbankadministrationsaufgaben ausführen mussten, wurden Sie entweder mit dem su mysqlBefehl zu "mysql" , oder verwenden Sie, sudowo die sudoers-Datei Ihnen mysql-Berechtigungen für diese bestimmten Befehle gibt.

Edward Falk
quelle
1
Die sudoers-Datei gibt Ihnen mehrere Administratoren. Tatsächlich sind Ihre Administratoren root und alle in der sudoers-Datei aufgeführten. Ohne die sudoers-Datei ist der einzige Administrator root.
Edward Falk
1
"Unter SELinux (Security Enhanced Linux) gibt es effektiv eine Zugriffssteuerungsliste, die festlegt, wer was kann, und selbst root kann diese Einschränkungen nicht umgehen." - Wenn sogar root diese Einschränkungen nicht durchstehen kann, wer erstellt diese Einschränkungen dann überhaupt?
Rancho
1
Um dies zu verdeutlichen: "Im Grunde sind Ihre Administratoren root und alle in der sudoers-Datei aufgeführten." sudoers-Einträge müssen nicht unbedingt vollständigen Root- oder Root-Zugriff bedeuten. Möglicherweise kann Sven einen Überwachungsagenten neu starten, der als Moniser ausgeführt wird.
Jeff Schaller
1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]. Auf meinem Computer (Solus OS 3) ist dies falsch. Mein Benutzername ist nicht in der sudoers-Datei enthalten. und ich kann es immer noch tun sudo.
Martin Andersson
2
Alte Antwort und das ist Pedanterie, ist aber sueine Abkürzung für "Ersatzbenutzer"; sudoist also "Ersatzbenutzer do". Sie können verwenden, suum sich als ein anderer Benutzer anzumelden, nicht nur root. Mit können Sie sudoBefehle als anderer Benutzer ausführen.
Josaphatv