SeAssignSecurityEx-Funktion (wdm.h)
Die SeAssignSecurityEx-Routine erstellt einen selbstrelativen Sicherheitsdeskriptor für ein neues Objekt unter Berücksichtigung der folgenden optionalen Parameter: einen Sicherheitsdeskriptor des übergeordneten Verzeichnisses des Objekts, einen expliziten Sicherheitsdeskriptor für das Objekt und den Objekttyp.
Syntax
NTSTATUS SeAssignSecurityEx(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] ULONG AutoInheritFlags,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
Parameter
[in, optional] ParentDescriptor
Zeiger auf die SECURITY_DESCRIPTOR des übergeordneten Objekts, das das neu erstellte Objekt enthält. ParentDescriptor kann NULL sein oder über eine NULL-Systemzugriffssteuerungsliste (SACL) oder eine NULL-Zugriffssteuerungsliste (DACL) verfügen.
[in, optional] ExplicitDescriptor
Zeiger auf eine explizite SECURITY_DESCRIPTOR , die auf das neue Objekt angewendet wird. ExplicitDescriptor kann NULL sein oder eine NULL-SACL - oder NULL-DACL aufweisen.
[out] NewDescriptor
Empfängt einen Zeiger auf die zurückgegebene SECURITY_DESCRIPTOR. SeAssignSecurityEx weist den Puffer aus dem ausgelagerten Speicherpool zu.
[in, optional] ObjectType
Zeiger auf eine GUID für den Typ des zu erstellenden Objekts. Wenn das Objekt keine GUID aufweist, muss ObjectType auf NULL festgelegt werden.
[in] IsDirectoryObject
Gibt an, ob das neue Objekt ein Verzeichnisobjekt ist. Wenn IsDirectoryObject auf TRUE festgelegt ist, ist das neue Objekt ein Verzeichnisobjekt, andernfalls ist das neue Objekt kein Verzeichnisobjekt.
[in] AutoInheritFlags
Gibt den Typ der automatischen Vererbung an, der auf Zugriffssteuerungseinträge (Access Control Entries, ACE) in den von ParentDescriptor angegebenen Zugriffssteuerungslisten (Access Control Lists, ACL) angewendet wird. AutoInheritFlags steuert auch die Berechtigungsüberprüfung, die Besitzerüberprüfung und das Festlegen eines Standardbesitzers und einer Standardgruppe für NewDescriptor. AutoInheritFlags muss auf ein logisches OR mit einem oder mehreren der folgenden Werte festgelegt werden:
Wert | Bedeutung |
---|---|
SEF_DACL_AUTO_INHERIT | ACEs in der DACL von ParentDescriptor werden zusätzlich zu expliziten ACEs, die von ExplicitDescriptor angegeben werden, von NewDescriptor geerbt. |
SEF_SACL_AUTO_INHERIT | ACEs in der SACL von ParentDescriptor werden zusätzlich zu expliziten ACEs, die von ExplicitDescriptor angegeben werden, von NewDescriptor geerbt. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor ist der Standarddeskriptor für den durch ObjectType angegebenen Objekttyp. ExplicitDescriptor wird nicht verwendet, wenn ACEs von ParentDescriptor geerbt werden. |
SEF_AVOID_PRIVILEGE_CHECK | Die Berechtigungsüberprüfung wird nicht durchgeführt. Dieses Flag ist bei der automatischen Vererbung nützlich, da es die Berechtigungsprüfung für jedes untergeordnete Element vermeidet, das aktualisiert werden muss. |
SEF_AVOID_OWNER_CHECK | Die Besitzerüberprüfung wird nicht durchgeführt. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Wenn ein Besitzer von ExplicitDescriptor angegeben wird, wird dieses Flag nicht verwendet, und der Besitzer von NewDescriptor wird auf den von ExplictDescriptor angegebenen Besitzer festgelegt.
Wenn ein Besitzer nicht von ExplicitDescriptor angegeben wird, wird dieses Flag wie folgt verwendet: Wenn das Flag festgelegt ist, wird der Besitzer von NewDescriptor auf den Besitzer von ParentDescriptor festgelegt. Andernfalls wird der Besitzer von NewDescriptor auf den von SubjectContext angegebenen Besitzer festgelegt. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Wenn eine Gruppe von ExplicitDescriptor angegeben wird, wird dieses Flag nicht verwendet, und die Gruppe von NewDescriptor wird auf die durch ExplictDescriptor angegebene Gruppe festgelegt.
Wenn eine Gruppe nicht von ExplicitDescriptor angegeben wird, wird dieses Flag wie folgt verwendet: Wenn das Flag festgelegt ist, wird die Gruppe von NewDescriptor auf die Gruppe von ParentDescriptor festgelegt. Andernfalls wird die Gruppe von NewDescriptor auf die durch SubjectContext angegebene Gruppe festgelegt. |
Die Zuweisung von System- und Ermessens-ACLs wird in der folgenden Tabelle beschrieben:
Nicht standardmäßige explizite Deskriptor(1) | Expliziter Standarddeskriptor(2) | NULL Expliziter Deskriptor | |
---|---|---|---|
Die ACL wird vom übergeordneten Deskriptor(3) geerbt. | Weisen Sie sowohl geerbte als auch explizite ACLs(5)(6) zu. | Weisen Sie geerbte ACL zu. | Weisen Sie geerbte ACL zu. |
Die ACL wird nicht vom übergeordneten Deskriptor(4) geerbt. | Weisen Sie nicht standardmäßige ACL zu. | Weisen Sie die Standard-ACL zu. | Weisen Sie keine ACL zu. |
Hinweise zur Zuweisung
- Das flag SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT ist nicht angegeben.
- Das flag SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT wird angegeben.
- Das Flag für automatisches Erben für eine ACL wird angegeben (SEF_DACL_AUTO_INHERIT oder SEF_SACL_AUTO_INHERIT).
- Das Flag für automatisches Erben für eine ACL ist nicht angegeben.
- ACEs, deren INHERITED_ACE Bit in ihrem AceFlags-Member festgelegt ist, werden nicht in den zugewiesenen Sicherheitsdeskriptor kopiert.
- ACEs, die vom übergeordneten Deskriptor geerbt werden, werden nach den vom expliziten Deskriptor angegebenen ACEs angefügt.
[in] SubjectContext
Zeiger auf einen Sicherheitskontext des Betreffs, der das Objekt erstellt. SubjectContext wird verwendet, um Standardsicherheitsinformationen für das neue Objekt abzurufen, einschließlich des Standardbesitzers, der primären Gruppe und der freien Zugriffssteuerung.
[in] GenericMapping
Zeiger auf ein Array von Zugriffsmaskenwerten, die die Zuordnung zwischen den einzelnen generischen Rechten zu objektspezifischen Rechten angeben.
[in] PoolType
Dieser Parameter wird nicht verwendet. Der Puffer, der den neuen Sicherheitsdeskriptor enthält, wird immer aus einem ausgelagerten Pool zugeordnet.
Rückgabewert
SeAssignSecurityEx gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Die Zuweisung war erfolgreich. |
|
Die als Besitzer des neuen Sicherheitsdeskriptors bereitgestellte SID ist keine SID, die der Aufrufer als Besitzer eines Objekts zuweisen darf. |
|
Der Aufrufer verfügt nicht über die Berechtigung (SeSecurityPrivilege), die erforderlich ist, um die angegebene SACL explizit zuzuweisen. |
Hinweise
SeAssignSecurityEx erweitert den grundlegenden Betrieb von SeAssignSecurity auf folgende Weise:
- ObjectType gibt optional einen Objekttyp an. Die objektspezifische Vererbung wird durch die folgenden Member eines objektspezifischen ACE gesteuert: Flags, InheritedObjectType und Header.AceFlags.
- AutoInheritFlags gibt den Typ der automatischen Vererbung von ACEs an, die verwendet wird. AutoInheritFlags steuert auch die Berechtigungsüberprüfung, die Besitzerüberprüfung und das Festlegen eines Standardbesitzers und einer Standardgruppe für NewDescriptor.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 2000. |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDDIs(storport) |