Wie verhindert ein Betriebssystem, dass ein nicht privilegierter Prozess eine privilegierte Anweisung ausführt?


8

Unter Unix

Wenn Sie ein Gastbenutzer sind und Folgendes getan haben:

chmod 777 /

Es würde scheitern.

Aber wie geschieht dies intern auf Hardwareebene?

Bisher denke ich, dass Folgendes passiert:

  • Das Betriebssystem versucht, diese Anweisung auszuführen.
  • Informationen zu Berechtigungen befinden sich möglicherweise irgendwo im sekundären Speicher. Es würde also eine Schreibanweisung ausgeben.
  • Vor 2 wird geprüft, ob der Benutzer dazu berechtigt ist. Wenn er es nicht ist, würde es nur eine Fehlermeldung ausgeben.

Passiert das so oder wird in einer solchen Situation eine Unterbrechung ausgelöst? Gibt es eine Routine in der ISR-Tabelle im Hauptspeicher, die nicht privilegierten Anweisungen entspricht?

Antworten:


10

chmodist eine Dateisystemoperation , keine privilegierte Anweisung. Dateisystemberechtigungen werden nicht auf Hardwareebene behandelt. Die Software (insbesondere das Betriebssystem) stellt fest, dass der Prozess, der den Systemaufruf aufruft, nicht über ausreichende Berechtigungen verfügt, um den Vorgang für das Dateisystemobjekt auszuführen, und der Systemaufruf wird mit einem Berechtigungsfehler zurückgegeben.


5

Eigentlich stellen Sie zwei verschiedene Fragen:

  1. Wie verhindert ein Betriebssystem, dass ein nicht privilegierter Prozess eine privilegierte Anweisung ausführt?
  2. Warum kann ein nicht privilegierter Prozess nicht aufgerufen werden chmod 777 /?

Antwort für 2:

chmodruft intern eine Funktion aus der libc auf (zweckmäßigerweise auch aufgerufen chmod()). Diese Funktion prüft, ob der Aufrufer über ausreichende Berechtigungen für die Operation verfügt. Andernfalls wird ein Fehler zurückgegeben EPERM.

Die Antwort für 1 ist interessanter:

Der genaue Mechanismus hängt vom Betriebssystem und der Hardwareplattform ab, aber im Grunde ist es so: Alle modernen Prozessoren verfügen über integrierte Sicherheitsfunktionen. Dadurch kann das Betriebssystem dem Prozessor mitteilen: "Führen Sie dieses Programm aus, aber lassen Sie es diese privilegierten Anweisungen nicht ausführen." Der Prozessor selbst wird also die Beschränkung der zulässigen Anweisungen durchsetzen. Wenn das Programm versucht, eine privilegierte Anweisung auszuführen, gibt der Prozessor die Steuerung an das Betriebssystem zurück, wodurch normalerweise das fehlerhafte Programm beendet wird. Einzelheiten finden Sie beispielsweise unter https://en.wikipedia.org/wiki/Ring_%28computer_security%29

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.