Laut http://www.linfo.org/kernel_mode.html in Absatz 7:
Wenn ein Benutzerprozess einen Teil des Kernel-Codes über einen Systemaufruf ausführt, wird der Prozess vorübergehend zu einem Kernel-Prozess und befindet sich im Kernel-Modus. Im Kernelmodus verfügt der Prozess über Root-Berechtigungen (dh Administratorrechte) und Zugriff auf wichtige Systemressourcen. Der gesamte Kernel, der kein Prozess, sondern eine Steuerung von Prozessen ist, wird nur im Kernelmodus ausgeführt. Wenn der Kernel die Anforderung durch einen Prozess erfüllt hat, kehrt der Prozess in den Benutzermodus zurück.
Es ist mir ziemlich unklar über die Linie,
Im Kernelmodus verfügt der Prozess über Root-Berechtigungen (dh Administratorrechte) und Zugriff auf wichtige Systemressourcen.
Wie kommt es, dass ein Userspace-Prozess, der nicht als Root ausgeführt wird, über Root-Rechte verfügt? Wie unterscheidet es sich vom Userspace-Prozess, der als Root ausgeführt wird?
Antworten:
(Ich werde versuchen, mich kurz zu fassen.)
Theoretisch gibt es zwei Dimensionen von Privilegien:
Die Befehlssatzarchitektur (ISA) des Computers , die bestimmte Informationen und / oder Funktionen der Maschine schützt.
Das Betriebssystem (OS) erstellt ein Ökosystem für Anwendungen und Kommunikation. Im Kern ist der Kernel ein Programm, das auf dem ISA ohne jegliche Abhängigkeiten ausgeführt werden kann.
Die heutigen Betriebssysteme führen viele sehr unterschiedliche Aufgaben aus, so dass wir Computer wie heute verwenden können. In einer sehr (, sehr, sehr) vereinfachten Ansicht können Sie sich den Kernel als das einzige Programm vorstellen, das vom Computer ausgeführt wird. Anwendungen, Prozesse und Benutzer sind Artefakte des vom Betriebssystem und insbesondere vom Kernel erstellten Ökosystems.
Wenn wir über Benutzer- (Speicherplatz-) Berechtigungen in Bezug auf das Betriebssystem sprechen, sprechen wir über Berechtigungen, die vom Betriebssystem verwaltet, gewährt und erzwungen werden. Beispielsweise erzwingt der Kernel Dateiberechtigungen, die das Abrufen von Daten aus einem bestimmten Verzeichnis einschränken. Es untersucht einige der IDs, die der Datei zugeordnet sind, interpretiert einige Bits, die Berechtigungen darstellen, und ruft dann entweder die Daten ab oder lehnt dies ab.
Die Berechtigungshierarchie innerhalb der ISA stellt die Tools bereit, die der Kernel für seine Zwecke verwendet. Die spezifischen Details variieren stark, aber im Allgemeinen gibt es den Kernel-Modus, in dem von der CPU ausgeführte Programme sehr frei sind, E / A auszuführen und die von der ISA angebotenen Anweisungen und den Benutzermodus zu verwenden, in dem sich E / A und Anweisungen befinden eingeschränkt.
Wenn beispielsweise die Anweisung zum Schreiben von Daten in eine bestimmte Speicheradresse gelesen wird, kann eine CPU im Kernelmodus einfach Daten in eine bestimmte Speicheradresse schreiben, während sie im Benutzermodus zunächst einige Überprüfungen durchführt, um festzustellen, ob sich die Speicheradresse in a befindet Bereich der zulässigen Adresse, in die Daten geschrieben werden dürfen. Wenn festgestellt wird, dass die Adresse möglicherweise nicht beschrieben wird, wechselt der ISA normalerweise in den Kernelmodus und beginnt mit der Ausführung eines anderen Befehlsstroms, der Teil des Kernels ist, und führt das Richtige aus (TM).
Dies ist ein Beispiel für eine Durchsetzungsstrategie, mit der sichergestellt werden soll, dass ein Programm kein anderes Programm stört. Das Javascript auf der Webseite, die Sie gerade besuchen, kann Ihre Online-Banking-Anwendung also nicht dazu bringen, zweifelhafte Transaktionen durchzuführen.
Beachten Sie, dass im Kernel-Modus nichts anderes ausgelöst wird, um das Richtige durchzusetzen. Es wird davon ausgegangen, dass das im Kernel-Modus ausgeführte Programm das Richtige tut. Deshalb kann im Kernel-Modus ein Programm nicht gezwungen werden, die abstrakten Regeln und Konzepte des Ökosystems des Betriebssystems einzuhalten. Aus diesem Grund sind Programme, die im Kernelmodus ausgeführt werden, als Root-Benutzer vergleichsweise leistungsfähig.
Technisch gesehen ist der Kernel-Modus viel leistungsfähiger als nur der Root-Benutzer auf Ihrem Betriebssystem zu sein.
quelle
Root- und Nicht-Root-Berechtigungen beziehen sich alle auf den Benutzerbereich. Beispielsweise kann ein Root-Benutzer eine Anwendung installieren und ein normaler Benutzer nicht.
Selbst der Root-Benutzer hat jedoch einige Einschränkungen. Diese Einschränkungen werden durch das Design des Betriebssystems auferlegt. Sie unterscheiden zwischen Benutzerbereich und Kernelbereich. Selbst wenn Sie ein Root-Benutzer sind, können Sie die Geschwindigkeit, mit der sich die Festplatte dreht, nicht ändern, wenn Ihnen diese Option nicht über den Treiber zur Verfügung gestellt wird (Sie können einen Treiber schreiben, der die Funktion zulässt, aber sogar dann greifen Sie nicht direkt auf die Hardware zu, sondern über den Treiber.
Der Grund dafür ist, dass die eigentliche Steuerung der Hardware ausschließlich im Kernelbereich erfolgt und die Art und Weise, wie der Benutzerbereich darauf zugreift, über Systemaufrufe erfolgt. Ein Kernel Space ist kein Ort für einen Benutzer :)
Um Ihre Frage zu beantworten, ist es nicht der Prozess, der die Root-Berechtigungen erhält, sondern der Wechsel in den Kernel-Modus, der uneingeschränkten Zugriff auf jede Systemressource ermöglicht. Dieser unbegrenzte Zugriff ist jedoch nur für den Code verfügbar, der im Kernelmodus ausgeführt wird, sodass Ihr Prozess ihn nicht hat. Es werden nur die Aufrufe des Kernel-Codes verwendet.
Der im Kernelmodus ausgeführte Code hat einen völlig uneingeschränkten Zugriff auf das System.
quelle