SeSetSecurityDescriptorInfoEx-Funktion (ntifs.h)
Die SeSetSecurityDescriptorInfoEx-Routine ändert den Sicherheitsdeskriptor eines Objekts und gibt an, ob das Objekt die automatische Vererbung von Zugriffssteuerungseinträgen (Access Control Entries, ACE) unterstützt.
Syntax
NTSTATUS SeSetSecurityDescriptorInfoEx(
[in, optional] PVOID Object,
[in] PSECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] ULONG AutoInheritFlags,
[in] POOL_TYPE PoolType,
[in] PGENERIC_MAPPING GenericMapping
);
Parameter
[in, optional] Object
Zeiger auf das Objekt, dessen Sicherheitsbeschreibung geändert werden soll. Dies wird verwendet, um Sicherheitskontingentinformationen zu aktualisieren.
[in] SecurityInformation
Zeiger auf einen Wert, der angibt, welche Sicherheitsinformationen festgelegt werden sollen. Dies kann eine Kombination aus einem oder mehreren der folgenden Optionen sein.
Wert | Bedeutung |
---|---|
DACL_SECURITY_INFORMATION | Gibt an, dass die DACL (Discretionary Access Control List) des Objekts festgelegt wird. Erfordert WRITE_DAC Zugriff. |
GROUP_SECURITY_INFORMATION | Gibt an, dass der primäre Gruppenbezeichner des Objekts festgelegt wird. Erfordert WRITE_OWNER Zugriff. |
OWNER_SECURITY_INFORMATION | Gibt an, dass der Besitzerbezeichner des Objekts festgelegt wird. Erfordert WRITE_OWNER Zugriff. |
SACL_SECURITY_INFORMATION | Gibt an, dass die System-ACL (SACL) des Objekts festgelegt wird. Erfordert ACCESS_SYSTEM_SECURITY Zugriff. |
ModificationDescriptor
Der Eingabesicherheitsdeskriptor, der auf das -Objekt angewendet werden soll. Es wird erwartet, dass der Aufrufer dieser Routine den übergebenen Sicherheitsdeskriptor vor dem Aufruf überprüft und erfasst und nach dem Aufruf freigibt.
[in, out] ObjectsSecurityDescriptor
Zeiger auf einen Zeiger auf den Sicherheitsdeskriptor des Objekts. Der Sicherheitsdeskriptor muss im selbstrelativen Format vorliegen. Diese Struktur muss vom Aufrufer aufgehoben werden.
[in] AutoInheritFlags
Bitmaske, die die automatische Vererbung von ACEs steuert. Legen Sie auf das logische OR eines oder mehrerer der folgenden Bitflags fest:
Sicherheitsinformationsflags | Bedeutung |
---|---|
SEF_DACL_AUTO_INHERIT | Wenn dieses Flag festgelegt ist, wird die DACL als DACL für automatisches Erben behandelt und wie im folgenden Abschnitt "Hinweise" beschrieben verarbeitet. Dieses Bit wird ignoriert, wenn DACL_SECURITY_INFORMATION im SecurityInformation-Parameter nicht festgelegt ist. |
SEF_SACL_AUTO_INHERIT | Wenn dieses Flag festgelegt ist, wird die SACL als automatisches Erben von SACL behandelt und wie im folgenden Abschnitt "Hinweise" beschrieben verarbeitet. Dieses Bit wird ignoriert, wenn SACL_SECURITY_INFORMATION im SecurityInformation-Parameter nicht festgelegt ist. |
[in] PoolType
Gibt den Pooltyp an, der beim Zuweisen eines neuen Sicherheitsdeskriptors verwendet werden soll. Dies kann eine der folgenden Sein:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
Normalerweise gibt ein Aufrufer PagedPool oder nonPagedPool an, wenn auf den Puffer unter IRQL >= DISPATCH_LEVEL oder in einem beliebigen Threadkontext zugegriffen wird.
Die Pooltypen NonPagedPoolMustSucceed und NonPagedPoolCacheAlignedMustS sind veraltet und sollten nicht mehr verwendet werden.
[in] GenericMapping
Zeiger auf eine GENERIC_MAPPING-Struktur, die die Zuordnung von generischen zu bestimmten und Standardzugriffstypen für das Objekt angibt, auf das zugegriffen wird. Es wird erwartet, dass diese Zuordnungsstruktur sicher für den Zugriff (d. h. bei Bedarf erfasst) ist, bevor sie an diese Routine übergeben wird.
Rückgabewert
Rückgabecode | Beschreibung |
---|---|
STATUS_SUCCESS | Die Sicherheitsbeschreibung des Objekts wurde erfolgreich geändert. |
STATUS_BAD_DESCRIPTOR_FORMAT | Der Sicherheitsdeskriptor des bereitgestellten Objekts lag nicht im selbstrelativen Format vor. |
STATUS_NO_SECURITY_ON_OBJECT | Das -Objekt verfügt nicht über einen Sicherheitsdeskriptor. |
Hinweise
Wenn der AutoInheritFlags-Parameter null ist, entspricht die Auswirkung des Aufrufs von SeSetSecurityDescriptorInfoEx dem Aufruf von SeSetSecurityDescriptorInfo.
Wenn AutoInheritFlags das SEF_DACL_AUTO_INHERIT Bit angibt, wendet SeSetSecurityDescriptorInfoEx die folgenden Regeln auf die DACL an, um den neuen Sicherheitsdeskriptor aus dem aktuellen Deskriptor zu erstellen:
Wenn das SE_DACL_PROTECTED-Flag in den Steuerbits des aktuellen Sicherheitsdeskriptors oder des Eingabesicherheitsdeskriptors nicht festgelegt ist, erstellt SeSetSecurityDescriptorInfoEx den Ausgabesicherheitsdeskriptor aus den geerbten ACEs des aktuellen Sicherheitsdeskriptors und nicht inheritierten ACEs von SecurityDescriptor. Das heißt, es ist unmöglich, einen geerbten ACE zu ändern, indem die ACL für ein Objekt geändert wird. Dieses Verhalten behält die geerbten ACEs bei, da sie vom übergeordneten Container geerbt wurden.
Wenn SE_DACL_PROTECTED in der Eingabe SecurityDescriptor festgelegt ist, wird der aktuelle Sicherheitsdeskriptor ignoriert. Der Ausgabesicherheitsdeskriptor wird als Kopie der Eingabe SecurityDescriptor erstellt, wobei alle INHERITED_ACE Bits deaktiviert sind.
Im Idealfall sollte ein ACL-Editor die INHERITED_ACE Bits deaktivieren, die für den Aufrufer angeben, dass die acEs, die vom übergeordneten Objekt geerbt wurden, jetzt explizit für das Objekt festgelegt werden.
- Wenn SE_DACL_PROTECTED im aktuellen Sicherheitsdeskriptor und nicht im SecurityDescriptor festgelegt ist, wird der aktuelle Sicherheitsdeskriptor ignoriert. Der Ausgabesicherheitsdeskriptor wird als Kopie des SecurityDescriptor erstellt. Es liegt in der Verantwortung des Aufrufers sicherzustellen, dass für die richtigen ACEs das INHERITED_ACE Bit aktiviert ist.
Wenn AutoInheritFlags das SEF_SACL_AUTO_INHERIT Bit angibt, wendet SeSetSecurityDescriptorInfoEx ähnliche Regeln auf die neue SACL an.
Weitere Informationen zur Zugriffssteuerung und ACE-Vererbung finden Sie im Abschnitt Sicherheit der Microsoft Windows SDK-Dokumentation.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 |
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |