Функция SeAssignSecurityEx (wdm.h)
Подпрограмма SeAssignSecurityEx создает самостоятельный дескриптор безопасности для нового объекта с учетом следующих необязательных параметров: дескриптор безопасности родительского каталога объекта, явный дескриптор безопасности для объекта и тип объекта.
Синтаксис
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
);
Параметры
[in, optional] ParentDescriptor
Указатель на SECURITY_DESCRIPTOR родительского объекта, содержащего новый создаваемый объект. ParentDescriptor может иметь значение NULL или иметь список системного управления доступом (SACL) или список управления доступом на уровне NULL (DACL).
[in, optional] ExplicitDescriptor
Указатель на явный SECURITY_DESCRIPTOR , применяемый к новому объекту. ExplicitDescriptor может иметь значение NULL или ИМЕТЬ СПИСОК SACL NULL или NULL DACL.
[out] NewDescriptor
Получает указатель на возвращенный SECURITY_DESCRIPTOR. SeAssignSecurityEx выделяет буфер из выгружаемого пула памяти.
[in, optional] ObjectType
Указатель на GUID для типа создаваемого объекта. Если объект не имеет GUID, objectType должен иметь значение NULL.
[in] IsDirectoryObject
Указывает, является ли новый объект объектом каталога. Если параметр IsDirectoryObject имеет значение TRUE, новый объект является объектом каталога, в противном случае новый объект не является объектом каталога.
[in] AutoInheritFlags
Указывает тип автоматического наследования, применяемого к записям управления доступом (ACE) в списках управления доступом (ACL), заданных ParentDescriptor. AutoInheritFlags также управляет проверкой привилегий, проверкой владельца и настройкой владельца и группы по умолчанию для NewDescriptor. Для параметра AutoInheritFlags должно быть задано логическое или одно или несколько следующих значений:
Значение | Значение |
---|---|
SEF_DACL_AUTO_INHERIT | ACE в DACL ParentDescriptor наследуются NewDescriptor в дополнение к явным ACE, заданным Явным Дескриптором. |
SEF_SACL_AUTO_INHERIT | ACE в списке SACL ParentDescriptor наследуются NewDescriptor в дополнение к явным ACE, заданным ЯвнымDescriptor. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor — это дескриптор по умолчанию для типа объекта, заданного objectType. ExplicitDescriptor не используется, если ACE наследуются от ParentDescriptor. |
SEF_AVOID_PRIVILEGE_CHECK | Проверка привилегий не выполняется. Этот флаг полезен при автоматическом наследовании, так как он позволяет избежать проверки привилегий для каждого дочернего элемента, который необходимо обновить. |
SEF_AVOID_OWNER_CHECK | Проверка владельца не выполняется. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Если владелец указан с помощью ExplicitDescriptor, этот флаг не используется, а владельцу NewDescriptor присваивается владелец, указанный в ExplictDescriptor.
Если владелец не указан с помощью ExplicitDescriptor, этот флаг используется следующим образом: Если флаг задан, владельцу NewDescriptor присваивается владелец ParentDescriptor. В противном случае владельцу NewDescriptor присваивается владелец, указанный subjectContext. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Если группа указана с помощью ExplicitDescriptor, этот флаг не используется, а группе NewDescriptor присваивается группа, указанная в ExplictDescriptor.
Если группа не указана с помощью ExplicitDescriptor, этот флаг используется следующим образом: Если флаг задан, группе NewDescriptor присваивается группа ParentDescriptor. В противном случае группе NewDescriptor присваивается группа, заданная subjectContext. |
Назначение системных и дискреционных списков ACL описано в следующей таблице:
Явный дескриптор nondefault(1) | Явный дескриптор по умолчанию(2) | NULL Явный дескриптор | |
---|---|---|---|
ACL наследуется от родительского дескриптора(3). | Назначьте как унаследованные, так и явные списки управления доступом (5)(6). | Назначьте унаследованный список ACL. | Назначьте унаследованный список ACL. |
ACL не наследуется от родительского дескриптора(4). | Назначьте список ACL, отличный от default. | Назначьте список ACL по умолчанию. | Не назначать список ACL. |
Заметки о назначении
- Флаг SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT не указан.
- Указан флаг SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT.
- Указан флаг автоматического наследования для списка ACL (SEF_DACL_AUTO_INHERIT или SEF_SACL_AUTO_INHERIT).
- Флаг автоматического наследования для ACL не указан.
- ACE с битом INHERITED_ACE, заданным в их члене AceFlags , не копируются в назначенный дескриптор безопасности.
- ACE, наследуемые от родительского дескриптора, добавляются после ACE, указанных явным дескриптором.
[in] SubjectContext
Указатель на контекст безопасности субъекта, создающего объект . SubjectContext используется для получения сведений о безопасности по умолчанию для нового объекта, включая владельца по умолчанию, основную группу и управление дискреционным доступом.
[in] GenericMapping
Указатель на массив значений маски доступа, которые указывают сопоставление между каждым универсальным правом и правами, зависящими от объекта.
[in] PoolType
Этот параметр не используется. Буфер для хранения нового дескриптора безопасности всегда выделяется из страничного пула.
Возвращаемое значение
SeAssignSecurityEx возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
|
Назначение выполнено успешно. |
|
Идентификатор безопасности, предоставленный в качестве владельца нового дескриптора безопасности, не является идентификатором безопасности, который вызывающий объект уполномочен назначать в качестве владельца объекта. |
|
Вызывающий объект не имеет привилегии (SeSecurityPrivilege), необходимой для явного назначения указанного списка SACL. |
Комментарии
SeAssignSecurityEx расширяет базовую работу SeAssignSecurity следующими способами:
- ObjectType при необходимости задает тип объекта. Наследование объектов управляется следующими элементами объекта ACE: Flags, InheritedObjectType и Header.AceFlags.
- AutoInheritFlags указывает тип автоматического наследования используемых ACE. AutoInheritFlags также управляет проверкой привилегий, проверкой владельца и настройкой владельца и группы по умолчанию для NewDescriptor.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 2000. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs(storport) |