Wie ist die Beziehung zwischen Root und Kernel? [geschlossen]

8

Basierend auf einem Teil der ersten Antwort auf diese Fragen :

Lesen aus einer Datei (der Kernel muss überprüfen, ob die Berechtigungen das Lesen aus dieser Datei ermöglichen, und dann führt der Kernel die eigentlichen Anweisungen auf der Festplatte aus, um die Datei zu lesen).

Es erfordert Root-Berechtigungen, um die Berechtigung für eine Datei zu ändern. Mit dem Root-Recht kann der Benutzer auf alle Dateien zugreifen, ohne sich um die Berechtigung sorgen zu müssen. Gibt es also Beziehungen zwischen Root und Kernel?

Ron Vince
quelle
Die Frage ist zu vage / unklar, um beantwortet zu werden.
Psusi
Diese Frage beinhaltet praktisch mehrere Dinge. Möglicherweise muss man sich über Systemaufrufe , Berechtigungen und Berechtigungsstufen informieren . Ich weiß nicht, wie ich die Frage besser formulieren soll. Irgendwie versteht Steven D , was ich meine.
Ron Vince

Antworten:

13

Zunächst eine Klarstellung:

Es erfordert Root-Berechtigungen, um die Berechtigung für eine Datei zu ändern.

Aus man 2 chmod können wir sehen, dass der Systemaufruf chmod () EPERM (einen Berechtigungsfehler) zurückgibt, wenn:

Die effektive UID stimmt nicht mit dem Eigentümer der Datei überein, und der Prozess ist nicht privilegiert (Linux: Es verfügt nicht über die CAP_FOWNER-Funktion).

Dies bedeutet normalerweise, dass Sie entweder der Eigentümer der Datei oder der Root-Benutzer sein müssen. Aber wir können sehen, dass die Situation unter Linux etwas komplizierter sein könnte.

Gibt es also Beziehungen zwischen Root und Kernel?

Wie der von Ihnen zitierte Text gezeigt hat, ist der Kernel dafür verantwortlich, zu überprüfen, ob die UID des Prozesses, der einen Systemaufruf ausführt (dh der Benutzer, unter dem er ausgeführt wird), das tun darf, was er verlangt. Die Superkräfte von root ergeben sich daher aus der Tatsache, dass der Kernel so programmiert wurde, dass er immer eine vom Root-Benutzer angeforderte Operation zulässt (UID = 0).

Unter Linux prüfen die meisten der verschiedenen Berechtigungsprüfungen, ob die angegebene UID über die erforderlichen Funktionen verfügt . Das Funktionssystem ermöglicht eine genauere Kontrolle darüber, wer was tun darf.

Um jedoch die traditionelle UNIX-Bedeutung des "Root" -Benutzers beizubehalten, verfügt ein Prozess, der mit der UID 0 ausgeführt wird, über alle Funktionen.

Beachten Sie, dass Prozesse, die als UID = 0 ausgeführt werden, zwar über Superuser-Berechtigungen verfügen, jedoch weiterhin Anforderungen an den Kernel über die Systemaufrufschnittstelle stellen müssen.

Daher ist ein Userspace-Prozess, der sogar als Root ausgeführt wird, in seiner Funktionsweise immer noch eingeschränkt, da er im " Benutzermodus " ausgeführt wird und der Kernel im " Kernelmodus " ausgeführt wird, bei dem es sich tatsächlich um unterschiedliche Betriebsmodi für die CPU selbst handelt. Im Kernelmodus kann ein Prozess auf jeden Speicher zugreifen oder Anweisungen erteilen. Im Benutzermodus (auf x86-CPUs gibt es tatsächlich eine Reihe verschiedener geschützter Modi) kann ein Prozess nur auf seinen eigenen Speicher zugreifen und nur einige Anweisungen ausgeben. Daher hat ein als root ausgeführter Userspace-Prozess immer noch nur Zugriff auf die Kernelmodusfunktionen, die der Kernel für ihn bereitstellt.

Steven D.
quelle
Sollten wir sagen, dass root oder UID = 0 das Kernel-Level-Privileg hat? Oder gibt es irgendwelche Einschränkungen, die der Kernel auf die Wurzel anwendet?
Ron Vince
Prozesse, die als UID = 0 ausgeführt werden, verfügen über Superuser-Berechtigungen. Sie stellen jedoch weiterhin Anforderungen an den Kernel über die Systemaufrufschnittstelle. Ein Userspace-Prozess, der sogar als Root ausgeführt wird, ist in seiner Funktionsweise immer noch eingeschränkt, da er im "Benutzermodus" ausgeführt wird und der Kernel im "Kernelmodus" ausgeführt wird, bei dem es sich tatsächlich um unterschiedliche Betriebsmodi für die CPU selbst handelt. Ein als root ausgeführter Userspace-Prozess hat weiterhin nur Zugriff auf die Kernelmodusfunktionen, die der Kernel für ihn bereitstellt. Weitere Informationen finden Sie unter linfo.org/kernel_mode.html .
Steven D
Ich habe der Antwort mein Lob mit einigen Links hinzugefügt.
Steven D
Haben Sie Empfehlungen zu Unix-Büchern?
Ron Vince
Oh, danke, dass du das erzählt hast. Ich mache immer noch Literaturrecherche basierend auf den gegebenen Antworten. Sie verweisen auf die Idee und das Literaturmaterial, aber ich habe noch keine Gewissheit, das Richtige oder Falsche dieser Antworten zu bestimmen.
Ron Vince