다음을 통해 공유


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을 지정합니다.

NonPagedPoolMustSucceedNonPagedPoolCacheAlignedMustS 풀 형식은 사용되지 않으므로 더 이상 사용하지 않아야 합니다.

[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

추가 정보

에이스

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo