Verwalten von Berechtigungen in einem Dateisystem

Berechtigungen sind ein völlig separater Mechanismus, der vom Betriebssystem verwendet wird, um bestimmte Vorgänge zu steuern. Jeder Berechtigung sind bestimmte Vorgänge zugeordnet, die ausgeführt werden können, wenn die Berechtigung vom Aufrufer gehalten und aktiviert wird. Beachten Sie hier die beiden Bedingungen:

  • Die Berechtigung muss vom Aufrufer gehalten werden.

  • Die Berechtigung muss ebenfalls aktiviert sein.

Das Prinzip, das hier als geringste Rechte bezeichnet wird, erfordert, dass Berechtigungen vor ihrer Verwendung aktiviert werden, anstatt einfach anzunehmen, um die Wahrscheinlichkeit zu minimieren, dass ein Benutzer versehentlich einen Vorgang ausführt, den er nicht beabsichtigt hat. SeRestorePrivilege würde es dem Aufrufer beispielsweise normalerweise ermöglichen, die üblichen Überprüfungen auf Schreibzugriff auf eine Datei zu umgehen. Ein Administrator möchte die normalen Sicherheitsüberprüfungen beim Kopieren einer Datei möglicherweise nicht überschreiben, möchte dies jedoch beim Wiederherstellen derselben Datei mithilfe eines Sicherungs-/Wiederherstellungsprogramms tun.

Für Dateisysteme gibt es eine Reihe von Berechtigungen, die häufig verwendet werden, um das normale Verhalten (insbesondere Sicherheitsüberprüfungen) für das System zu ändern. Diese Berechtigungen sind:

  • SeBackupPrivilege ermöglicht das Abrufen von Dateiinhalten, auch wenn der Sicherheitsdeskriptor für die Datei diesen Zugriff möglicherweise nicht gewährt. Ein Aufrufer mit aktiviertem SeBackupPrivilege entfällt die Notwendigkeit einer ACL-basierten Sicherheitsüberprüfung.

  • SeRestorePrivilege ermöglicht die Änderung von Dateiinhalten, auch wenn der Sicherheitsdeskriptor für die Datei diesen Zugriff möglicherweise nicht gewährt. Diese Funktion kann auch verwendet werden, um den Besitzer und den Schutz zu ändern.

  • SeChangeNotifyPrivilege ermöglicht das Durchlaufen nach rechts. Diese Berechtigung ist eine wichtige Optimierung in Windows, da die Kosten für die Durchführung einer Sicherheitsüberprüfung für jedes einzelne Verzeichnis in einem Pfad durch das Halten dieser Berechtigung verschleiert werden.

  • SeManageVolumePrivilegePrivilege ermöglicht bestimmte Verwaltungsvorgänge auf Volumeebene, z. B. Sperren des Volumes, Defragmentierung, Aufheben der Volumebereitstellung und Festlegen der gültigen Datenlänge unter Windows XP und höher. Beachten Sie, dass diese besondere Berechtigung explizit von einem Dateisystemtreiber erzwungen wird, der hauptsächlich auf FSCTL-Vorgängen basiert. In diesem Fall trifft das Dateisystem eine Richtlinienentscheidung, um diese Berechtigung zu erzwingen. Die Ermittlung, ob diese Berechtigung vom Aufrufer gehalten wird, erfolgt durch den Sicherheitsverweismonitor im Rahmen der normalen Berechtigungsprüfung.

Es gibt zwar zahlreiche andere Berechtigungen, diese sind jedoch normalerweise für Dateisysteme undurchsichtig und werden daher nur vom Sicherheitsreferenzmonitor interpretiert.

Die wichtigsten Windows-Routinen für die Verwaltung von Berechtigungen in einem Dateisystem sind:

  • SePrivilegeCheck: Diese Routine führt eine Überprüfung auf einen bestimmten Satz erforderlicher Berechtigungen durch.

  • SeSinglePrivilegeCheck: Diese Routine führt eine Überprüfung auf eine einzelne bestimmte Berechtigung durch; Es handelt sich um eine optimierte Version von SePrivilegeCheck.

  • SeAccessCheck: Diese Routine führt die normale Zugriffsüberprüfung für ein Objekt (normalerweise ein Dateiobjekt für ein Dateisystem) durch.

  • SeFreePrivileges: Diese Routine gibt den Berechtigungsblock frei, der von einem vorherigen Aufruf von SeAccessCheck zurückgegeben wurde.

  • SeAppendPrivileges: Diese Routine fügt aktivierte Berechtigungen zu einer ACCESS_STATE-Struktur hinzu. In der Regel verwendet ein Dateisystem die ACCESS_STATE, die während IRP_MJ_CREATE Verarbeitung an das Dateisystem übergeben wurde.