SetSecurityInfo 함수(aclapi.h)

SetSecurityInfo 함수는 지정된 개체의 보안 설명자에 지정된 보안 정보를 설정합니다. 호출자는 핸들로 개체를 식별합니다.

개체의 SACL을 설정하려면 호출자가 SE_SECURITY_NAME 권한을 사용하도록 설정해야 합니다.

구문

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

매개 변수

[in] handle

보안 정보를 설정할 개체에 대한 핸들입니다.

[in] ObjectType

핸들 매개 변수로 식별되는 개체의 형식을 나타내는 SE_OBJECT_TYPE 열거형의 멤버입니다.

[in] SecurityInfo

설정할 보안 정보의 유형을 나타내는 비트 플래그 집합입니다. 이 매개 변수는 SECURITY_INFORMATION 비트 플래그의 조합일 수 있습니다.

[in, optional] psidOwner

개체의 소유자를 식별하는 SID에 대한 포인터입니다. SID는 보안 설명자의 소유자 SID로 할당할 수 있는 SID여야 합니다. SecurityInfo 매개 변수에는 OWNER_SECURITY_INFORMATION 플래그가 포함되어야 합니다. 소유자 SID를 설정하지 않는 경우 이 매개 변수는 NULL 일 수 있습니다.

[in, optional] psidGroup

개체의 기본 그룹을 식별하는 SID에 대한 포인터입니다. SecurityInfo 매개 변수에는 GROUP_SECURITY_INFORMATION 플래그가 포함되어야 합니다. 기본 그룹 SID를 설정하지 않는 경우 이 매개 변수는 NULL 일 수 있습니다.

[in, optional] pDacl

개체의 새 DACL에 대한 포인터입니다. SecurityInfo 매개 변수 값에 DACL_SECURITY_INFORMATION 플래그가 포함되어 있지 않으면 이 매개 변수는 무시됩니다. SecurityInfo 매개 변수 값에 DACL_SECURITY_INFORMATION 플래그가 포함되어 있고 이 매개 변수의 값이 NULL로 설정된 경우 개체에 대한 모든 권한이 모든 사용자에게 부여됩니다. null DACL에 대한 자세한 내용은 DACL 만들기를 참조하세요.

[in, optional] pSacl

개체의 새 SACL에 대한 포인터입니다. SecurityInfo 매개 변수에는 SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION 또는 BACKUP_SECURITY_INFORMATION 플래그가 포함되어야 합니다. SACL_SECURITY_INFORMATION 또는 SCOPE_SECURITY_INFORMATION 설정하는 경우 호출자는 SE_SECURITY_NAME 권한을 사용하도록 설정해야 합니다. SACL을 설정하지 않는 경우 이 매개 변수는 NULL 일 수 있습니다.

반환 값

함수가 성공하면 함수는 ERROR_SUCCESS 반환합니다.

함수가 실패하면 WinError.h에 정의된 0이 아닌 오류 코드를 반환합니다.

설명

DACL(임의 액세스 제어 목록) 또는 개체의 SACL(시스템 액세스 제어 목록)에 있는 요소를 설정하는 경우 시스템은 ACE 상속 규칙에 따라 상속 가능한 모든 ACE(액세스 제어 항목)를 기존 자식 개체에 자동으로 전파합니다.

SetSecurityInfo 함수를 다음 유형의 개체와 함께 사용할 수 있습니다.

  • NTFS의 로컬 또는 원격 파일 또는 디렉터리
  • 명명된 파이프
  • 로컬 또는 원격 프린터
  • 로컬 또는 원격 Windows 서비스
  • 네트워크 공유
  • 레지스트리 키
  • 세마포, 이벤트, 뮤텍스 및 대기 가능한 타이머
  • 프로세스, 스레드, 작업 및 파일 매핑 개체
  • 창 스테이션 및 데스크톱
  • 디렉터리 서비스 개체

SetSecurityInfo 함수는 기본 순서에 따라 액세스 허용 또는 액세스 거부 API의 순서를 다시 지정하지 않습니다. 상속 가능한 ACE를 기존 자식 개체에 전파하는 경우 SetSecurityInfo 는 상속된 ACE를 자식 개체의 DACL에 있는 모든 상속되지 않은 ACL 다음에 순서대로 배치합니다.

참고 개체의 자식에 대한 공유 액세스를 사용할 수 없는 경우 이 함수는 보호되지 않는 API를 자식에 전파하지 않습니다. 예를 들어 디렉터리가 단독 액세스 권한으로 열려 있는 경우 운영 체제는 디렉터리의 보안이 변경될 때 보호되지 않는 ACL을 해당 디렉터리의 하위 디렉터리 또는 파일에 전파하지 않습니다.
 
경고 제공된 핸들MAXIMUM_ALLOWED ACCESS_MASK 값으로 열린 경우 SetSecurityInfo 함수는 API를 자식에 전파하지 않습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 aclapi.h
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

ACL

Access Control

기본 Access Control 함수

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo