GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unterschied zwischen Sudo-Benutzer und Root-Benutzer?

Geschlossen . Diese Frage braucht Details oder Klarheit. Antworten werden derzeit nicht akzeptiert.

Möchten Sie diese Frage verbessern? Fügen Sie Details hinzu und klären Sie das Problem, indem Sie diesen Beitrag bearbeiten.

Vor 4 Jahren geschlossen.


Verbessern Sie diese Frage

Die /etc/sudoers listet auf, welche Benutzer was mit sudo tun können Befehl

Der Root-Benutzer erstellt und modifiziert die Datei /etc/sudoers Datei.

Dieses Konzept ist für mich schwer zu verstehen.

Wenn alle Benutzer mit sudo-Berechtigung zu sudoers gehören Gruppe, dann können alle root werden, indem sie sudo su eingeben Befehl.

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

Bitte erklären Sie es mir.

Akzeptierte Antwort:

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 bekannt als „Superuser“) ist der Name des Systemadministratorkontos. Die Ursprünge des Namens sind etwas archaisch, aber das macht nichts.

Der Root-Benutzer hat die Benutzer-ID 0 und hat 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 „sudo“-Befehls mussten Sie sich als root anmelden, wenn Sie administrative Aufgaben ausführen wollten, entweder durch irgendwie erhaltenes Login-Prompt² oder mit dem su Befehl („su“ steht für Ersatzbenutzer.)³

Das ist ein bisschen umständlich und erlaubt es Ihnen auch nicht, Benutzern teilweise administrative Befugnisse zu erteilen. Also wurde der „sudo“-Befehl (kurz für „substitute user do“) erfunden.

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

Also z.B. sudo vi /etc/hosts würde Ihnen erlauben, die hosts-Datei zu bearbeiten, als ob Sie als root laufen würden. Sie brauchen nicht einmal das Root-Passwort, nur Ihr eigenes Login-Passwort.

Und natürlich sudo su würde es Ihnen ermöglichen, einfach root zu werden. Das Ergebnis ist dasselbe, als ob Sie sich als root angemeldet oder su ausgeführt hätten Befehl, außer dass Sie das Root-Passwort nicht kennen müssen, aber Sie müssen sich in der sudoers-Datei befinden.

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

Die sudoers-Datei gibt Ihnen mehrere Administratoren⁴. Tatsächlich sind Ihre Administratoren root, plus alle, die in der sudoers-Datei aufgeführt sind. Ohne die sudoers-Datei ist der einzige Administrator root.

Tatsächlich ist es in Organisationen, in denen jemand anderes Ihren Computer für Sie verwaltet, durchaus üblich, das Root-Passwort Ihres eigenen Computers nicht zu kennen – solange Sie sich in der sudoers-Datei befinden, spielt es keine Rolle.

Bei einer Firma, für die ich arbeitete, mit einer gigantischen Serverfarm, kannte nur eine sehr, sehr kleine Anzahl von Leuten die Root-Passwörter. Stattdessen gab es eine Datenbank darüber, wer auf welchen Servern arbeiten durfte. Ein automatisierter Prozess würde Sie zu den Sudoers-Dateien der Server hinzufügen, für die Sie autorisiert waren, und Sie entfernen, wenn Ihre Autorisierung abgelaufen ist.

Verwandte:Unbekannte Zeichen aus Zeichenfolge für -exec maskieren?

¹ Noch etwas:Moderne Unix-Versionen können jetzt sogar einschränken, was der Root-Benutzer tun kann.

Unter SELinux (Security Enhanced Linux) gibt es praktisch eine Zugriffskontrollliste, die bestimmt, welches Programm was tun kann, und selbst Root kann diese Einschränkungen nicht umgehen.

Unter Apples System Integrity Protection (SIP) (auch bekannt als „rootless“) System werden bestimmte Dateien und Verzeichnisse gesperrt, sodass nur Anwendungen auf der entsprechenden Whitelist darauf zugreifen können.

Diese Systeme existieren, um ein System vor dem Fall zu schützen, in dem es einem böswilligen Benutzer gelingt, Root-Zugriff zu erhalten. (Oder in einigen Fällen, um Benutzer daran zu hindern, ihre eingebetteten Geräte zu jailbreaken.) Aus offensichtlichen Gründen ist es extrem schwierig, diese Einschrä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 auf seriellen Leitungen anstelle von Windows-Systemen verwendeten. Sie können immer noch eine „login:“-Eingabeaufforderung erhalten, indem Sie einfach login eingeben in einem beliebigen Terminalfenster oder indem Sie von einem anderen Ort aus eine ssh- (oder telnet- oder rsh-) Verbindung zu Ihrem Computer öffnen. Sie können sich von dort aus als ein anderer Benutzer anmelden, wenn Sie möchten. (Und wenn Ihr Computer über serielle Ports verfügt, können Sie ihn trotzdem so konfigurieren, dass er Anmeldungen auf ihnen zulässt.)

³ Es ist auch möglich, einzelnen Programmen Root-Zugriff zu geben. Diese Programme können alles tun, was ein Benutzer mit Root-Zugriff tun kann, selbst wenn sie von einem normalen Benutzer ausgeführt werden. Diese sind in der Regel auf bestimmte Aufgaben beschränkt. Beispielsweise hat das Programm crontab Root-Rechte, sodass es die Cron-Tabellen bearbeiten kann. Offensichtlich hat „sudo“ Root-Rechte, damit es tun kann, was es tut.

⁴ Ich werde noch einen Punkt ansprechen, den ich zuvor beschönigt habe. Ich habe „Administrator“ und „Root“ synonym verwendet, aber es gibt andere Arten von Administratoren. Diese werden oft als „Rollenkonten“ bezeichnet, was bedeutet, dass diese Konten nicht echten Menschen gehören, sondern stattdessen existieren, um eine bestimmte Rolle im System zu übernehmen. Ein Blick in die /etc/passwd Datei auf Ihrem System finden Sie Dutzende solcher Konten.

Wenn beispielsweise mysql auf Ihrem System installiert wäre, gäbe es einen „mysql“-Benutzer, und alle Datenbankdateien, Konfigurationsdateien usw. würden alle diesem Benutzer gehören. 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 ausführen müssten, würden Sie entweder mit dem su mysql zu „mysql“ werden Befehl oder verwenden Sie sudo wo die sudoers-Datei Ihnen mysql-Berechtigungen für diese spezifischen Befehle geben würde.


Linux
  1. Unterschied zwischen den Befehlen „su“ und „su -“ in Linux

  2. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  3. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  4. Unterschied zwischen Eot und Eof?

  5. Unterschied zwischen [0-9], [[:digit:]] und D?

Der Unterschied zwischen sudo und su erklärt

Lernen Sie den Unterschied zwischen den Befehlen „su“ und „su -“ in Linux kennen

Verstehen des Unterschieds zwischen dem Befehl sudo und su unter Linux

Der Unterschied zwischen Update-grub und Update-grub2?

Linux-Unterschied zwischen sudo crontab -e und nur crontab -e

Was ist der Unterschied zwischen Benutzerbereich und Kernelbereich?