다음을 통해 공유


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

ACE의 자동 상속을 제어하는 비트 마스크입니다. 다음 비트 플래그 중 하나 이상의 논리적 OR로 설정합니다.

보안 정보 플래그 의미
SEF_DACL_AUTO_INHERIT 이 플래그가 설정되면 DACL은 자동 상속 DACL로 처리되고 다음 주의 섹션에 설명된 대로 처리됩니다. DACL_SECURITY_INFORMATION SecurityInformation 매개 변수에 설정되지 않은 경우 이 비트는 무시됩니다.
SEF_SACL_AUTO_INHERIT 이 플래그가 설정되면 SACL은 자동 상속 SACL로 처리되고 다음 주의 섹션에 설명된 대로 처리됩니다. SecurityInformation 매개 변수에서 SACL_SECURITY_INFORMATION 설정되지 않은 경우 이 비트는 무시됩니다.

[in] PoolType

다음 중 하나일 수 있는 새 보안 설명자를 할당할 때 사용할 풀 유형을 지정합니다.

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • pagedPoolCacheAligned

일반적으로 호출자는 PagedPool지정하거나, 버퍼가 IRQL >= DISPATCH_LEVEL 또는 임의 스레드 컨텍스트에서 액세스될 경우 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에 다음 규칙을 적용하여 현재 설명자에서 새 보안 설명자를 만듭니다.

  • SE_DACL_PROTECTED 플래그가 현재 보안 설명자 또는 securityDescriptor 입력제어 비트에 설정되지 않은 경우 SeSetSecurityDescriptorInfoEx 현재 보안 설명자 및 SecurityDescriptor상속된 ACE의 출력 보안 설명자를 생성합니다. 즉, 개체의 ACL을 변경하여 상속된 ACE를 변경할 수 없습니다. 이 동작은 부모 컨테이너에서 상속된 상속된 ACE를 유지합니다.

  • securityDescriptor 입력SE_DACL_PROTECTED 설정된 경우 현재 보안 설명자는 무시됩니다. 출력 보안 설명자는 INHERITED_ACE 비트가 꺼져 있는 securityDescriptor 입력 복사본으로 빌드됩니다.

이상적으로 ACL 편집기는 개체의 부모로부터 상속된 ACE가 이제 개체에 명시적으로 설정되고 있음을 호출자에게 나타내는 INHERITED_ACE 비트를 해제해야 합니다.

  • SE_DACL_PROTECTED SecurityDescriptor아닌 현재 보안 설명자에 설정되어 있으면 현재 보안 설명자는 무시됩니다. 출력 보안 설명자는 SecurityDescriptor복사본으로 빌드됩니다. 올바른 ACE에 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

참고 항목

ACE

ACL

GENERIC_MAPPING

rtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

rtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo