Função SeAssignSecurityEx (wdm.h)
A rotina SeAssignSecurityEx cria um descritor de segurança auto-relativo para um novo objeto, considerando os seguintes parâmetros opcionais: um descritor de segurança do diretório pai do objeto, um descritor de segurança explícito para o objeto e o tipo de objeto.
Sintaxe
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
);
Parâmetros
[in, optional] ParentDescriptor
Ponteiro para o SECURITY_DESCRIPTOR do objeto pai que contém o novo objeto que está sendo criado. ParentDescriptor pode ser NULL ou ter uma SACL (lista de controle de acesso do sistema NULL) ou uma DACL (lista de controle de acesso discricionário) NULL.
[in, optional] ExplicitDescriptor
Ponteiro para uma SECURITY_DESCRIPTOR explícita que é aplicada ao novo objeto. ExplicitDescriptor pode ser NULL ou ter um SACL NULL ou um DACL NULL .
[out] NewDescriptor
Recebe um ponteiro para o SECURITY_DESCRIPTOR retornado. SeAssignSecurityEx aloca o buffer do pool de memória paginado.
[in, optional] ObjectType
Ponteiro para um GUID para o tipo de objeto que está sendo criado. Se o objeto não tiver um GUID, ObjectType deverá ser definido como NULL.
[in] IsDirectoryObject
Especifica se o novo objeto é um objeto de diretório. Se IsDirectoryObject estiver definido como TRUE, o novo objeto será um objeto de diretório, caso contrário, o novo objeto não será um objeto de diretório.
[in] AutoInheritFlags
Especifica o tipo de herança automática que é aplicada às ACE (entradas de controle de acesso) nas listas de controle de acesso (ACL) especificadas por ParentDescriptor. AutoInheritFlags também controla a verificação de privilégios, a verificação de proprietário e a configuração de um proprietário e grupo padrão para NewDescriptor. AutoInheritFlags deve ser definido como um OR lógico de um ou mais dos seguintes valores:
Valor | Significado |
---|---|
SEF_DACL_AUTO_INHERIT | AcEs na DACL de ParentDescriptor são herdados por NewDescriptor, além de ACEs explícitas especificadas por ExplicitDescriptor. |
SEF_SACL_AUTO_INHERIT | AcEs no SACL de ParentDescriptor são herdados por NewDescriptor, além de ACEs explícitas especificadas por ExplicitDescriptor. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor é o descritor padrão para o tipo de objeto especificado por ObjectType. ExplicitDescriptor não será usado se ACEs forem herdados de ParentDescriptor. |
SEF_AVOID_PRIVILEGE_CHECK | A verificação de privilégios não foi feita. Esse sinalizador é útil com herança automática porque evita a verificação de privilégios em cada filho que precisa ser atualizado. |
SEF_AVOID_OWNER_CHECK | A verificação de proprietário não foi feita. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Se um proprietário for especificado por ExplicitDescriptor, esse sinalizador não será usado e o proprietário de NewDescriptor será definido como o proprietário especificado por ExplictDescriptor.
Se um proprietário não for especificado por ExplicitDescriptor, esse sinalizador será usado da seguinte maneira: se o sinalizador estiver definido, o proprietário de NewDescriptor será definido como o proprietário do ParentDescriptor. Caso contrário, o proprietário de NewDescriptor será definido como o proprietário especificado pelo SubjectContext. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Se um grupo for especificado por ExplicitDescriptor, esse sinalizador não será usado e o grupo de NewDescriptor será definido como o grupo especificado por ExplictDescriptor.
Se um grupo não for especificado por ExplicitDescriptor, esse sinalizador será usado da seguinte maneira: se o sinalizador estiver definido, o grupo de NewDescriptor será definido como o grupo de ParentDescriptor. Caso contrário, o grupo de NewDescriptor será definido como o grupo especificado pelo SubjectContext. |
A atribuição de ACLs do sistema e discricionárias é descrita na tabela a seguir:
Descritor explícito não padrão(1) | Descritor explícito padrão(2) | NULL Descritor explícito | |
---|---|---|---|
A ACL é herdada do descritor pai(3). | Atribua ACLs herdadas e explícitas(5)(6). | Atribuir ACL herdada. | Atribuir ACL herdada. |
A ACL não é herdada do descritor pai(4). | Atribuir ACL não padrão. | Atribuir ACL padrão. | Atribuir nenhuma ACL. |
Anotações de atribuição
- O sinalizador SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT não é especificado.
- O sinalizador SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT é especificado.
- O sinalizador de herdação automática de uma ACL é especificado (SEF_DACL_AUTO_INHERIT ou SEF_SACL_AUTO_INHERIT).
- O sinalizador herdado automático de uma ACL não é especificado.
- AcEs com o INHERITED_ACE bit definido em seu membro AceFlagsnão são copiados para o descritor de segurança atribuído.
- AcEs herdados do descritor pai são acrescentados após os ACEs especificados pelo descritor explícito.
[in] SubjectContext
Ponteiro para um contexto de segurança do assunto que está criando o objeto. SubjectContext é usado para recuperar informações de segurança padrão para o novo objeto, incluindo o proprietário padrão, o grupo primário e o controle de acesso discricionário.
[in] GenericMapping
Ponteiro para uma matriz de valores de máscara de acesso que especificam o mapeamento entre cada direito genérico para direitos específicos do objeto.
[in] PoolType
Esse parâmetro não está em uso. O buffer para manter o novo descritor de segurança sempre é alocado do pool de páginas.
Retornar valor
SeAssignSecurityEx retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
A tarefa foi bem-sucedida. |
|
O SID fornecido como o proprietário do novo descritor de segurança não é um SID que o chamador está autorizado a atribuir como proprietário de um objeto. |
|
O chamador não tem o privilégio (SeSecurityPrivilege) necessário para atribuir explicitamente o SACL especificado. |
Comentários
SeAssignSecurityEx estende a operação básica de SeAssignSecurity das seguintes maneiras:
- ObjectType especifica opcionalmente um tipo de objeto. A herança específica do objeto é controlada pelos seguintes membros de um ACE específico do objeto: Flags, InheritedObjectType e Header.AceFlags.
- AutoInheritFlags especifica o tipo de herança automática de ACEs que é usado. AutoInheritFlags também controla a verificação de privilégios, a verificação de proprietário e a configuração de um proprietário e grupo padrão para NewDescriptor.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDDIs(storport) |