권한

권한은 사용자 또는 그룹 계정과 같은 계정 권한으로, 로컬 컴퓨터에서 시스템 종료, 장치 드라이버 로드, 시스템 시간 변경 등의 다양 한 시스템 관련 작업을 수행 하는 데 사용 됩니다. 권한은 다음과 같은 두 가지 방법으로 액세스 권한과 다릅니다.

  • 권한은 시스템 리소스 및 시스템 관련 태스크에 대 한 액세스를 제어 하는 반면 액세스 권한은 보안 개체에 대 한 액세스를 제어 합니다.
  • 시스템 관리자는 사용자 및 그룹 계정에 권한을 할당 하는 반면 시스템은 개체의 DACL에 있는 Ace에 부여 된 액세스 권한을 기반으로 보안 개체에 대 한 액세스를 허용 하거나 거부 합니다.

각 시스템에는 사용자 및 그룹 계정이 보유 한 권한을 저장 하는 계정 데이터베이스가 있습니다. 사용자가 로그온 하면 시스템에서 사용자에 게 부여 된 권한 또는 사용자가 속한 그룹을 포함 하 여 사용자의 권한 목록을 포함 하는 액세스 토큰 을 생성 합니다. 권한은 로컬 컴퓨터에만 적용 됩니다. 도메인 계정에는 다른 컴퓨터에 대 한 다른 권한이 있을 수 있습니다.

사용자가 권한 있는 작업을 수행 하려고 하면 시스템은 사용자의 액세스 토큰을 확인 하 여 사용자가 필요한 권한을 보유 하 고 있는지 여부를 확인 하 고, 필요한 경우 권한이 사용 되도록 설정 되어 있는지 여부를 확인 합니다. 사용자가 이러한 테스트에 실패 하면 시스템에서 작업을 수행 하지 않습니다.

액세스 토큰에 저장 된 권한을 확인 하려면 GetTokenInformation 함수를 호출 합니다 .이 함수는 사용 가능한 권한을 나타냅니다. 대부분의 권한은 기본적으로 사용 되지 않습니다.

Windows API는 _ _ 다양 한 권한을 식별 하기 위해 SE 할당 primarytoken NAME과 같은 문자열 상수 집합을 정의 합니다. 이러한 상수는 모든 시스템에서 동일 하며, Winnt. h에 정의 되어 있습니다. Windows에서 정의한 권한 테이블은 권한 상수를 참조 하십시오. 그러나 액세스 토큰의 권한을 가져오고 조정 하는 함수는 LUID 유형을 사용 하 여 권한을 식별 합니다. 권한에 대 한 LUID 값은 한 컴퓨터에서 다른 컴퓨터로, 한 컴퓨터의 부팅에서 다른 컴퓨터로 다를 수 있습니다. 문자열 상수 중 하나에 해당 하는 현재 LUID 를 가져오려면 LookupPrivilegeValue 함수를 사용 합니다. LookupPrivilegeName 함수를 사용 하 여 LUID 를 해당 문자열 상수로 변환 합니다.

시스템에서는 각 권한을 설명 하는 표시 이름 집합을 제공 합니다. 이는 사용자에 게 권한 설명을 표시 해야 하는 경우에 유용 합니다. LookupPrivilegeDisplayName 함수를 사용 하 여 권한의 문자열 상수에 해당 하는 설명 문자열을 검색할 수 있습니다. 예를 들어 영어 (미국)를 사용 하는 시스템에서 SE _ SYSTEMTIME _ name 권한의 표시 이름은 "시스템 시간 변경"입니다.

PrivilegeCheck 함수를 사용 하 여 액세스 토큰이 지정 된 권한 집합을 보유 하는지 여부를 확인할 수 있습니다. 이는 주로 클라이언트를 가장 하는 서버 응용 프로그램에 유용 합니다.

시스템 관리자는 사용자 관리자와 같은 관리 도구를 사용 하 여 사용자 및 그룹 계정에 대 한 권한을 추가 하거나 제거할 수 있습니다. 관리자는 LSA ( 로컬 보안 기관 ) 함수를 사용 하 여 권한으로 작업을 수행할 수 있습니다. LsaAddAccountRightsLsaRemoveAccountRights 함수는 계정에서 권한을 추가 하거나 제거 합니다. LsaEnumerateAccountRights 함수는 지정 된 계정이 보유 한 권한을 열거 합니다. LsaEnumerateAccountsWithUserRight 함수는 지정 된 권한을 보유 하는 계정을 열거 합니다.

권한 부여 상수

C + +에서 권한 사용 및 사용 안 함