SetSecurityDescriptorDacl 함수(securitybaseapi.h)
SetSecurityDescriptorDacl 함수는 DACL(임의 액세스 제어 목록)의 정보를 설정합니다. DACL이 보안 설명자에 이미 있는 경우 DACL이 대체됩니다.
구문
BOOL SetSecurityDescriptorDacl(
[in, out] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in] BOOL bDaclPresent,
[in, optional] PACL pDacl,
[in] BOOL bDaclDefaulted
);
매개 변수
[in, out] pSecurityDescriptor
함수가 DACL을 추가하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다. 이 보안 설명자는 절대 형식이어야 합니다. 즉, 해당 멤버는 연속 데이터에 대한 오프셋이 아닌 다른 구조체에 대한 포인터여야 합니다.
[in] bDaclPresent
보안 설명자에 DACL이 있음을 나타내는 플래그입니다. 이 매개 변수가 TRUE이면 함수는 SECURITY_DESCRIPTOR_CONTROL 구조에서 SE_DACL_PRESENT 플래그를 설정하고 pDacl 및 bDaclDefaulted 매개 변수의 값을 사용합니다. 이 매개 변수가 FALSE이면 함수는 SE_DACL_PRESENT 플래그를 지우고 pDacl 및 bDaclDefaulted 는 무시됩니다.
[in, optional] pDacl
보안 설명자에 대한 DACL 을 지정하는 ACL 구조체에 대한 포인터입니다. 이 매개 변수가 NULL이면 NULL DACL이 보안 설명자에 할당되어 개체에 대한 모든 액세스를 허용합니다. DACL은 보안 설명자에 복사되지 않고 에서 참조됩니다.
[in] bDaclDefaulted
DACL의 원본을 나타내는 플래그입니다. 이 플래그가 TRUE이면 DACL이 일부 기본 메커니즘에 의해 검색되었습니다. FALSE이면 DACL이 사용자가 명시적으로 지정했습니다. 함수는 이 값을 SECURITY_DESCRIPTOR_CONTROL 구조체 의 SE_DACL_DEFAULTED 플래그에 저장합니다. 이 매개 변수를 지정하지 않으면 SE_DACL_DEFAULTED 플래그가 지워집니다.
반환 값
함수가 성공하면 함수는 0이 아닌 값을 반환합니다.
함수가 실패하면 0을 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
빈 DACL과 존재하지 않는 DACL 사이에는 중요한 차이점이 있습니다. DACL이 비어 있으면 ACE( 액세스 제어 항목 )가 포함되지 않습니다. 따라서 액세스 권한이 명시적으로 부여되지 않습니다. 결과적으로 개체에 대한 액세스는 암시적으로 거부됩니다.
개체에 DACL이 없는 경우( pDacl 매개 변수가 NULL인 경우) 개체에 보호가 할당되지 않으며 모든 액세스 요청이 부여됩니다. 보안을 유지하려면 DACL을 사용하여 액세스를 제한합니다.
bDaclPresent 플래그 및 pDacl 매개 변수의 서로 다른 구성에는 세 가지 가능한 결과가 있습니다.
- pDacl 매개 변수가 DACL을 가리키고 bDaclPresent 플래그가 TRUE이면 DACL이 지정되고 개체에 대한 액세스를 허용하려면 액세스 허용 ACL이 포함되어야 합니다.
- pDacl 매개 변수가 DACL을 가리키지 않고 bDaclPresent 플래그가 TRUE이면 NULL DACL이 지정됩니다. 모든 액세스가 허용됩니다. 모든 사용자가 보안 설명자의 DACL 및 소유자를 변경할 수 있으므로 개체와 함께 NULL DACL을 사용하면 안 됩니다. 이렇게 하면 개체의 사용을 방해합니다.
- pDacl 매개 변수가 DACL을 가리키지 않고 bDaclPresent 플래그가 FALSE인 경우 상속 또는 기본 메커니즘을 통해 개체에 DACL을 제공할 수 있습니다.
예제
이 함수를 사용하는 예제는 새 개체에 대한 보안 설명자 만들기를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | securitybaseapi.h(Windows.h 포함) |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |