Freigeben über


SeSetSecurityDescriptorInfoEx-Funktion (ntifs.h)

Die SeSetSecurityDescriptorInfoEx Routine ändert die Sicherheitsbeschreibung 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

Zeigen Sie auf das Objekt, dessen Sicherheitsdeskriptor geändert werden soll. Dies wird verwendet, um Sicherheitskontingentinformationen zu aktualisieren.

[in] SecurityInformation

Zeigen Sie auf einen Wert, der angibt, welche Sicherheitsinformationen festgelegt werden sollen. Dies kann eine Kombination aus einer oder mehreren der folgenden Optionen sein.

Wert Bedeutung
DACL_SECURITY_INFORMATION Gibt an, dass die diskretionäre Zugriffssteuerungsliste (DACL) 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 den Besitzerbezeichner des Objekts an, das 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. Der Aufrufer dieser Routine wird erwartet, dass der übergebene Sicherheitsdeskriptor vor dem Aufruf durchsucht und erfasst und nach dem Aufruf freigegeben wird.

[in, out] ObjectsSecurityDescriptor

Zeigen Sie auf einen Zeiger auf den Sicherheitsdeskriptor des Objekts. Der Sicherheitsdeskriptor muss im selbstrelativen Format vorliegen. Diese Struktur muss vom Aufrufer abgeglichen werden.

[in] AutoInheritFlags

Bitmaske, die die automatische Vererbung von ACEs steuert. Legen Sie den logischen OR einer oder mehrerer der folgenden Bitkennzeichnungen fest:

Sicherheitsinformationskennzeichnungen Bedeutung
SEF_DACL_AUTO_INHERIT Wenn dieses Flag festgelegt ist, wird die DACL als DACL automatisch geerbt und wie im folgenden Abschnitt "Hinweise" beschrieben verarbeitet. Dieses Bit wird ignoriert, wenn DACL_SECURITY_INFORMATION nicht im parameter SecurityInformation festgelegt ist.
SEF_SACL_AUTO_INHERIT Wenn dieses Kennzeichen festgelegt ist, wird die SACL als SACL automatisch geerbt und wie im folgenden Abschnitt "Hinweise" beschrieben verarbeitet. Dieses Bit wird ignoriert, wenn SACL_SECURITY_INFORMATION nicht im parameter SecurityInformation 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-

In der Regel gibt ein Aufrufer PagedPool-an oder NonPagedPool-, wenn auf den Puffer bei IRQL >= DISPATCH_LEVEL oder in einem beliebigen Threadkontext zugegriffen wird.

Die NonPagedPoolMustSucceed und NonPagedPoolCacheAlignedMustS Pooltypen sind veraltet und sollten nicht mehr verwendet werden.

[in] GenericMapping

Zeiger auf eine GENERIC_MAPPING-Struktur, die die Zuordnung generischer zu bestimmten und Standardzugriffstypen für das Objekt angibt, auf das zugegriffen wird. Diese Zuordnungsstruktur wird erwartet, dass der Zugriff (d. h. bei Bedarf erfasst) sicher ist, bevor sie an diese Routine übergeben werden.

Rückgabewert

Rückgabecode Beschreibung
STATUS_SUCCESS Der Sicherheitsdeskriptor des Objekts wurde erfolgreich geändert.
STATUS_BAD_DESCRIPTOR_FORMAT Der Sicherheitsdeskriptor des bereitgestellten Objekts war nicht im selbstrelativen Format.
STATUS_NO_SECURITY_ON_OBJECT Das Objekt verfügt nicht über einen Sicherheitsdeskriptor.

Bemerkungen

Wenn der AutoInheritFlags Parameter null ist, ist die Auswirkung des Aufrufs SeSetSecurityDescriptorInfoEx- mit dem des Aufrufens von SeSetSecurityDescriptorInfoidentisch.

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 nicht in den Steuerelementbits des aktuellen Sicherheitsdeskriptors oder der Eingabe SecurityDescriptorfestgelegt ist, erstellt SeSetSecurityDescriptorInfoEx den Ausgabesicherheitsdeskriptor aus den geerbten ACEs des aktuellen Sicherheitsdeskriptors und nichtinheritierten ACEs von SecurityDescriptor. Das heißt, es ist unmöglich, eine geerbte ACE durch Ändern der ACL für ein Objekt zu ändern. 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 vom übergeordneten Objekt geerbten ACEs 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 Anrufers, sicherzustellen, dass die richtigen ACEs das INHERITED_ACE Bit aktiviert haben.

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
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL

Siehe auch

ACE-

ACL-

GENERIC_MAPPING

RtlCreateSecurityDescriptor-

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor-

RtlSetDaclSecurityDescriptor-

RtlSetOwnerSecurityDescriptor-

RtlValidSecurityDescriptor-

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo