Automatische Verteilung von vererbbaren ACEs
Die funktionen SetNamedSecurityInfo und SetSecurityInfo unterstützen die automatische Verteilung vererbbarer Zugriffssteuerungseinträge (ACEs). Wenn Sie z. B. diese Funktionen verwenden, um einem Verzeichnis in NTFS eine vererbbare ACE hinzuzufügen, wendet das System die ACE entsprechend den Zugriffssteuerungslisten (ACLs) vorhandener Unterverzeichnisse oder Dateien an.
Direkt angewendete ACEs haben Vorrang vor geerbten ACEs. Das System implementiert diese Priorität, indem direkt angewendete ACEs vor geerbten ACEs in einer diskretionären Zugriffssteuerungsliste (DACL) platziert werden. Wenn Sie die SetNamedSecurityInfo und SetSecurityInfo- Funktionen aufrufen, um die Sicherheitsinformationen eines Objekts festzulegen, setzt das System das aktuelle Vererbungsmodell für die ACLs aller Objekte in der Hierarchie unterhalb des Zielobjekts auf. Bei Objekten, die in das aktuelle Vererbungsmodell konvertiert wurden, werden die SE_DACL_AUTO_INHERITED und SE_SACL_AUTO_INHERITED Bits im Steuerelementfeld des Sicherheitsdeskriptors des Objekts festgelegt.
Wenn Sie einen neuen Sicherheitsdeskriptor erstellen, der das aktuelle Vererbungsmodell widerspiegelt, wird darauf geachtet, die Semantik der Sicherheitsbeschreibung nicht zu ändern. Daher werden ACEs niemals in Beziehung zueinander verschoben. Wenn eine solche Bewegung erforderlich ist (z. B. um alle nicht inheritierten ACEs vor einer ACL zu platzieren), wird die ACL als geschützt markiert, um die semantische Änderung zu verhindern.
Das System verwendet beim Verteilen geerbter ACEs an untergeordnete Objekte die folgenden Regeln:
- Wenn ein untergeordnetes Objekt ohne DACL eine ACE erbt, ist das Ergebnis ein untergeordnetes Objekt mit einer DACL, die nur die geerbte ACE enthält.
- Wenn ein untergeordnetes Objekt mit einer leeren DACL eine ACE erbt, ist das Ergebnis ein untergeordnetes Objekt mit einer DACL, die nur die geerbte ACE enthält.
- Wenn Sie eine vererbbare ACE aus einem übergeordneten Objekt entfernen, entfernt die automatische Vererbung alle Kopien der ACE, die von untergeordneten Objekten geerbt wurden.
- Wenn die automatische Vererbung dazu führt, dass alle ACEs aus der DACL eines untergeordneten Objekts entfernt werden, weist das untergeordnete Objekt eine leere DACL anstelle von DACL auf.
Diese Regeln können das unerwartete Ergebnis der Konvertierung eines Objekts ohne DACL in ein Objekt mit einer leeren DACL haben. Ein Objekt ohne DACL ermöglicht vollzugriff, aber ein Objekt mit einer leeren DACL lässt keinen Zugriff zu. Als Beispiel dafür, wie diese Regeln eine leere DACL erstellen können, angenommen, Sie fügen dem Stammobjekt einer Struktur von Objekten eine vererbbare ACE hinzu. Die automatische Vererbung verteilt die vererbbare ACE an alle Objekte in der Struktur. Untergeordnete Objekte, die ohne DACL gestartet wurden, verfügen jetzt über eine DACL mit der geerbten ACE. Wenn Sie die vererbbare ACE aus dem Stammobjekt entfernen, verteilt das System die Änderung automatisch an die untergeordneten Objekte. Untergeordnete Objekte, die ohne DACL (vollzugriff) gestartet wurden, verfügen jetzt über eine leere DACL (ohne Zugriff).
Um sicherzustellen, dass ein untergeordnetes Objekt ohne DACL nicht von vererbbaren ACEs betroffen ist, legen Sie das SE_DACL_PROTECTED Flag im Sicherheitsdeskriptor des Objekts fest.
Informationen zum ordnungsgemäßen Erstellen einer DACL finden Sie unter Erstellen einer DACL-.