SeAssignSecurity 함수(wdm.h)
SeAssignSecurity 루틴은 부모 디렉터리의 보안 설명자와 개체에 대해 원래 요청된 보안을 고려하여 새 개체에 대한 자체 상대 보안 설명자를 빌드합니다.
구문
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
);
매개 변수
[in, optional] ParentDescriptor
생성되는 새 개체를 포함하는 부모 디렉터리에 대한 SECURITY_DESCRIPTOR 포함하는 버퍼에 대한 포인터입니다( 있는 경우). ParentDescriptor는 NULL이거나 SACL(NULL 시스템 액세스 제어 목록) 또는 NULLDACL(임의 액세스 제어 목록)이 있을 수 있습니다.
[in, optional] ExplicitDescriptor
새 개체에 적용된 사용자가 지정한 SECURITY_DESCRIPTOR 포함하는 버퍼에 대한 포인터입니다. ExplicitDescriptor는 NULL이거나 NULL SACL 또는 NULL DACL이 있을 수 있습니다.
[out] NewDescriptor
반환된 SECURITY_DESCRIPTOR 대한 포인터를 받습니다. SeAssignSecurity 는 페이징된 메모리 풀에서 버퍼를 할당합니다.
[in] IsDirectoryObject
새 개체가 디렉터리 개체인지 여부를 지정합니다. TRUE 는 개체에 다른 개체가 포함되어 있음을 나타냅니다.
[in] SubjectContext
개체를 만드는 주체의 보안 컨텍스트를 포함하는 버퍼에 대한 포인터입니다. 기본 소유자, 기본 그룹 및 임의 액세스 제어와 같은 새 개체에 대한 기본 보안 정보를 검색하는 데 사용됩니다.
[in] GenericMapping
각 제네릭 권한에서 암시적 비일관적 권한으로의 매핑을 설명하는 GENERIC_MAPPING 구조체에 대한 포인터입니다.
[in] PoolType
이 매개 변수는 사용되지 않습니다. 새 보안 설명자를 저장할 버퍼는 항상 페이징 풀에서 할당됩니다.
반환 값
SeAssignSecurity 는 다음 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
과제가 성공했습니다. |
|
대상 보안 설명자의 소유자에게 제공된 SID는 호출자가 개체의 소유자로 할당할 권한이 있는 SID가 아닙니다. |
|
호출자에게 지정된 시스템 ACL을 명시적으로 할당하는 데 필요한 권한(SeSecurityPrivilege)이 없습니다. |
설명
호출자에게 반환된 최종 보안 설명자에는 정보가 혼합되어 있을 수 있으며, 일부는 새 개체의 부모로부터 명시적으로 제공될 수 있습니다.
SeAssignSecurity 는 권한 검사가 수행되지 않았다고 가정합니다. 이 루틴은 권한 검사를 수행합니다.
시스템 및 임의 ACL의 할당은 다음 표에 설명된 논리에 의해 제어됩니다.
명시적(기본이 아닌) ACL이 지정됨 | 명시적 기본 ACL 지정 | ACL이 지정되지 않음 | |
---|---|---|---|
부모로부터 상속 가능한 ACL | 지정된 ACL 할당 | 상속된 ACL 할당 | 상속된 ACL 할당 |
부모로부터 상속할 수 있는 ACL 없음 | 지정된 ACL 할당 | 기본 ACL 할당 | ACL 할당 없음 |
기본 ACL이든 아니든 명시적으로 지정된 ACL은 비어 있거나 null일 수 있습니다. 호출자는 커널 모드 클라이언트이거나 기본 또는 비기본 시스템 ACL을 명시적으로 할당할 수 있는 적절한 권한이 있어야 합니다.
새 개체의 소유자 및 그룹의 할당은 다음 논리에 의해 제어됩니다.
- 전달된 보안 설명자에 소유자가 포함된 경우 새 개체의 소유자로 할당됩니다. 그렇지 않으면 호출자의 토큰이 소유자를 결정하는 것으로 간주됩니다. 토큰 내에서 기본 소유자(있는 경우)가 할당됩니다. 그렇지 않으면 호출자의 사용자 ID가 할당됩니다.
- 전달된 보안 설명자에 그룹이 포함된 경우 새 개체의 그룹으로 할당됩니다. 그렇지 않으면 호출자의 토큰이 그룹을 결정하는 것으로 간주됩니다. 토큰 내에서 기본 그룹(있는 경우)이 할당됩니다. 그렇지 않으면 호출자의 기본 그룹 ID가 할당됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 이상 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |