SeSetSecurityDescriptorInfoEx 함수(ntifs.h)
SeSetSecurityDescriptorInfoEx 루틴은 개체의 보안 설명자를 수정하고 개체가 ACE(액세스 제어 항목)의 자동 상속을 지원하는지 여부를 지정합니다.
구문
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
);
매개 변수
[in, optional] Object
보안 설명자를 수정할 개체에 대한 포인터입니다. 보안 할당량 정보를 업데이트하는 데 사용됩니다.
[in] SecurityInformation
설정할 보안 정보를 지정하는 값에 대한 포인터입니다. 다음 중 하나 이상의 조합일 수 있습니다.
값 | 의미 |
---|---|
DACL_SECURITY_INFORMATION | 개체의 DACL(임의 액세스 제어 목록)이 설정되고 있음을 나타냅니다. WRITE_DAC 액세스가 필요합니다. |
GROUP_SECURITY_INFORMATION | 개체의 기본 그룹 식별자가 설정되고 있음을 나타냅니다. WRITE_OWNER 액세스가 필요합니다. |
OWNER_SECURITY_INFORMATION | 개체의 소유자 식별자가 설정되고 있음을 나타냅니다. WRITE_OWNER 액세스가 필요합니다. |
SACL_SECURITY_INFORMATION | 개체의 시스템 ACL(SACL)이 설정되고 있음을 나타냅니다. ACCESS_SYSTEM_SECURITY 액세스가 필요합니다. |
ModificationDescriptor
개체에 적용할 입력 보안 설명자입니다. 이 루틴의 호출자는 호출하기 전에 전달된 보안 설명자를 검색하고 캡처하고 호출 후 해제해야 합니다.
[in, out] ObjectsSecurityDescriptor
개체의 보안 설명자에 대한 포인터에 대한 포인터입니다. 보안 설명자는 자체 상대 형식이어야 합니다. 이 구조체는 호출자가 할당 취소해야 합니다.
[in] AutoInheritFlags
AES의 자동 상속을 제어하는 비트 마스크입니다. 다음 비트 플래그 중 하나 이상의 논리적 OR로 설정합니다.
보안 정보 플래그 | 의미 |
---|---|
SEF_DACL_AUTO_INHERIT | 이 플래그가 설정되면 DACL은 자동 상속 DACL로 처리되고 다음 주의 섹션에 설명된 대로 처리됩니다. SecurityInformation 매개 변수에서 DACL_SECURITY_INFORMATION 설정되지 않은 경우 이 비트는 무시됩니다. |
SEF_SACL_AUTO_INHERIT | 이 플래그가 설정되면 SACL은 자동 상속 SACL로 처리되고 다음 주의 섹션에 설명된 대로 처리됩니다. SecurityInformation 매개 변수에서 SACL_SECURITY_INFORMATION 설정되지 않은 경우 이 비트는 무시됩니다. |
[in] PoolType
다음 중 하나일 수 있는 새 보안 설명자를 할당할 때 사용할 풀 유형을 지정합니다.
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
일반적으로 호출자는 IRQL >= DISPATCH_LEVEL 또는 임의 스레드 컨텍스트에서 버퍼에 액세스할 경우 PagedPool을 지정하거나 그렇지 않으면 NonPagedPool을 지정합니다.
NonPagedPoolMustSucceed 및 NonPagedPoolCacheAlignedMustS 풀 형식은 사용되지 않으므로 더 이상 사용하지 않아야 합니다.
[in] GenericMapping
액세스하는 개체에 대한 특정 및 표준 액세스 형식에 대한 제네릭 매핑을 지정하는 GENERIC_MAPPING 구조체에 대한 포인터입니다. 이 매핑 구조는 이 루틴에 전달되기 전에 액세스(즉, 필요한 경우 캡처됨)에 안전하게 액세스할 수 있어야 합니다.
반환 값
반환 코드 | 설명 |
---|---|
STATUS_SUCCESS | 개체의 보안 설명자가 수정되었습니다. |
STATUS_BAD_DESCRIPTOR_FORMAT | 제공된 개체의 보안 설명자가 자체 상대 형식이 아닙니다. |
STATUS_NO_SECURITY_ON_OBJECT | 개체에 보안 설명자가 없습니다. |
설명
AutoInheritFlags 매개 변수가 0이면 SeSetSecurityDescriptorInfoEx를 호출하는 효과는 SeSetSecurityDescriptorInfo 호출과 동일합니다.
AutoInheritFlags가 SEF_DACL_AUTO_INHERIT 비트를 지정하는 경우 SeSetSecurityDescriptorInfoEx는 DACL에 다음 규칙을 적용하여 현재 설명자에서 새 보안 설명자를 만듭니다.
현재 보안 설명자 또는 입력 SecurityDescriptor의 제어 비트에 SE_DACL_PROTECTED 플래그가 설정되지 않은 경우 SeSetSecurityDescriptorInfoEx 는 현재 보안 설명자 및 SecurityDescriptor의 상속된 AES에서 출력 보안 설명자를 생성합니다. 즉, 개체의 ACL을 변경하여 상속된 ACE를 변경할 수 없습니다. 이 동작은 상속된 ACL이 부모 컨테이너에서 상속된 대로 유지됩니다.
입력 SecurityDescriptor에서 SE_DACL_PROTECTED 설정된 경우 현재 보안 설명자는 무시됩니다. 출력 보안 설명자는 INHERITED_ACE 비트가 꺼진 입력 SecurityDescriptor 의 복사본으로 빌드됩니다.
이상적으로 ACL 편집기는 호출자에게 개체의 부모로부터 상속된 AES가 개체에 명시적으로 설정되고 있음을 나타내는 INHERITED_ACE 비트를 해제해야 합니다.
- SE_DACL_PROTECTED SecurityDescriptor가 아닌 현재 보안 설명자에 설정된 경우 현재 보안 설명자는 무시됩니다. 출력 보안 설명자는 SecurityDescriptor의 복사본으로 빌드됩니다. 올바른 AES에 INHERITED_ACE 비트가 켜져 있는지 확인하는 것은 호출자의 책임입니다.
AutoInheritFlags가 SEF_SACL_AUTO_INHERIT 비트를 지정하는 경우 SeSetSecurityDescriptorInfoEx는 새 SACL에 유사한 규칙을 적용합니다.
액세스 제어 및 ACE 상속에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 보안 섹션을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |