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
STATUS_SUCCESS
Die Zuweisung war erfolgreich.
STATUS_INVALID_OWNER
Die SID, die für den Besitzer des Zielsicherheitsdeskriptors bereitgestellt wird, ist keine, die der Aufrufer als Besitzer eines Objekts zuweisen darf.
STATUS_PRIVILEGE_NOT_HELD
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)

Weitere Informationen

GENERIC_MAPPING

IoGetFileObjectGenericMapping

SECURITY_DESCRIPTOR

SeDeassignSecurity