SeAssignSecurity-Funktion (wdm.h)
Die SeAssignSecurity-Routine erstellt einen selbstrelativen Sicherheitsdeskriptor für ein neues Objekt unter Berücksichtigung des Sicherheitsdeskriptors des übergeordneten Verzeichnisses und aller ursprünglich angeforderten Sicherheit für das Objekt.
Syntax
NTSTATUS SeAssignSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in] BOOLEAN IsDirectoryObject,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
Parameter
[in, optional] ParentDescriptor
Zeiger auf einen Puffer, der die SECURITY_DESCRIPTOR für das übergeordnete Verzeichnis enthält, sofern vorhanden, mit dem neuen Objekt, das erstellt wird. ParentDescriptor kann NULL sein oder über eine NULL-Systemzugriffssteuerungsliste (SACL) oder eine NULL-Zugriffssteuerungsliste (DACL) verfügen.
[in, optional] ExplicitDescriptor
Zeiger auf einen Puffer, der die vom Benutzer angegebene SECURITY_DESCRIPTOR enthält, 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. SeAssignSecurity weist den Puffer aus dem ausgelagerten Speicherpool zu.
[in] IsDirectoryObject
Gibt an, ob das neue Objekt ein Verzeichnisobjekt ist. TRUE gibt an, dass das Objekt andere Objekte enthält.
[in] SubjectContext
Zeiger auf einen Puffer, der den Sicherheitskontext des Antragstellers enthält, der das Objekt erstellt. Dies wird verwendet, um Standardsicherheitsinformationen für das neue Objekt abzurufen, z. B. den Standardbesitzer, die primäre Gruppe und die freie Zugriffssteuerung.
[in] GenericMapping
Zeiger auf die GENERIC_MAPPING Struktur, die die Zuordnung von jedem generischen Recht zu den implizierten nicht generischen Rechten beschreibt.
[in] PoolType
Dieser Parameter wird nicht verwendet. Der Puffer, der den neuen Sicherheitsdeskriptor enthält, wird immer aus einem ausgelagerten Pool zugeordnet.
Rückgabewert
SeAssignSecurity kann eine der folgenden Aktionen zurückgeben:
Rückgabecode | Beschreibung |
---|---|
|
Die Zuweisung war erfolgreich. |
|
Die SID, die für den Besitzer des Zielsicherheitsdeskriptors bereitgestellt wird, ist keine, die der Aufrufer als Besitzer eines Objekts zuweisen darf. |
|
Der Aufrufer verfügt nicht über die Berechtigung (SeSecurityPrivilege), die zum expliziten Zuweisen der angegebenen System-ACL erforderlich ist. |
Hinweise
Der endgültige Sicherheitsdeskriptor, der an den Aufrufer zurückgegeben wird, enthält möglicherweise eine Mischung aus Informationen, die teilweise explizit aus dem übergeordneten Element des neuen Objekts bereitgestellt werden.
SeAssignSecurity geht davon aus, dass die Berechtigungsüberprüfung nicht durchgeführt wurde. Diese Routine führt die Berechtigungsüberprüfung durch.
Die Zuweisung von System- und ermessensbasierten ACLs wird durch die in der folgenden Tabelle dargestellte Logik gesteuert:
Explizite (nicht standardmäßige) ACL angegeben | Explizite Standard-ACL angegeben | Keine ACL angegeben | |
---|---|---|---|
Vererbbare ACL vom übergeordneten Element | Zuweisen einer angegebenen ACL | Zuweisen einer geerbten ACL | Zuweisen einer geerbten ACL |
Keine vererbbare ACL vom übergeordneten Element | Zuweisen einer angegebenen ACL | Standard-ACL zuweisen | Zuweisen einer ACL |
Eine explizit angegebene ACL, unabhängig davon, ob es sich um eine Standard-ACL handelt oder nicht, kann leer oder NULL sein. Der Aufrufer muss ein Client im Kernelmodus sein oder über geeignete Berechtigungen verfügen, um explizit eine Standard- oder Standardsystem-ACL zuzuweisen.
Die Zuweisung des Besitzers und der Gruppe des neuen Objekts wird durch die folgende Logik gesteuert:
- Wenn der übergebene Sicherheitsdeskriptor einen Besitzer enthält, wird er als Besitzer des neuen Objekts zugewiesen. Andernfalls wird das Token des Aufrufers berücksichtigt, um den Besitzer zu bestimmen. Innerhalb des Tokens wird ggf. der Standardbesitzer zugewiesen. Andernfalls wird die Benutzer-ID des Aufrufers zugewiesen.
- Wenn der übergebene Sicherheitsdeskriptor eine Gruppe enthält, wird sie als Gruppe des neuen Objekts zugewiesen. Andernfalls wird das Token des Aufrufers berücksichtigt, um die Gruppe zu bestimmen. Innerhalb des Tokens wird ggf. die Standardgruppe zugewiesen. Andernfalls wird die primäre Gruppen-ID des Aufrufers zugewiesen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows 2000 und höheren Versionen von Windows. |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |