Sdílet prostřednictvím


Privilegia

oprávnění je právo účtu, jako je účet uživatele nebo skupina, provádět různé operace související se systémem na místním počítači, jako je vypnutí systému, načítání ovladačů zařízení nebo změna systémového času. Oprávnění se liší od přístupových práv dvěma způsoby:

  • Oprávnění řídí přístup k systémovým prostředkům a úkolům souvisejícím se systémem, zatímco přístup k řízení přístupových práv k zabezpečitelným objektům.
  • Správce systému přiřadí oprávnění účtům uživatelů a skupin, zatímco systém uděluje nebo zakazuje přístup k zabezpečitelnému objektu na základě přístupových práv udělených v seznamech ACL objektu.

Každý systém má databázi účtů, která ukládá oprávnění uložená uživatelskými a skupinovými účty. Když se uživatel přihlásí, vytvoří systém přístupový token, který obsahuje seznam oprávnění uživatele, včetně těch udělených uživateli nebo skupinám, do kterých uživatel patří. Všimněte si, že oprávnění se vztahují pouze na místní počítač; Účet domény může mít různá oprávnění na různých počítačích.

Když se uživatel pokusí provést privilegovanou operaci, systém zkontroluje přístupový token uživatele a určí, jestli má uživatel potřebná oprávnění, a pokud ano, zkontroluje, jestli jsou oprávnění povolená. Pokud uživatel tyto testy selže, systém tuto operaci neprovede.

Chcete-li určit oprávnění uložená v přístupovém tokenu, zavolejte funkci GetTokenInformation, která také označuje, která oprávnění jsou povolena. Většina oprávnění je ve výchozím nastavení zakázaná.

Rozhraní API systému Windows definuje sadu řetězcových konstant, jako je například SE_ASSIGNPRIMARYTOKEN_NAME, k identifikaci různých oprávnění. Tyto konstanty jsou ve všech systémech stejné a jsou definovány v winnt.h. Tabulku oprávnění definovaných systémem Windows naleznete v tématu Konstanty oprávnění. Funkce, které získají a upraví oprávnění v přístupovém tokenu, však k identifikaci oprávnění používají typ LUID. LUID hodnoty pro oprávnění se můžou lišit od jednoho počítače po druhý a od jednoho spuštění po druhé na stejném počítači. Pokud chcete získat aktuální LUID, který odpovídá jedné z řetězcových konstant, použijte funkci LookupPrivilegeValue. Pomocí funkce LookupPrivilegeName převeďte LUID na odpovídající řetězcovou konstantu.

Systém poskytuje sadu zobrazovaných názvů, které popisují všechna oprávnění. To je užitečné, když potřebujete uživateli zobrazit popis oprávnění. Pomocí funkce LookupPrivilegeDisplayName načtěte řetězec popisu, který odpovídá řetězcové konstantě pro oprávnění. Například v systémech, které používají angličtinu v USA, je zobrazovaný název oprávnění SE_SYSTEMTIME_NAME změnit systémový čas.

Pomocí funkce PrivilegeCheck můžete určit, jestli přístupový token obsahuje zadanou sadu oprávnění. To je užitečné hlavně pro serverové aplikace, které zosobní klienta.

Správce systému může použít nástroje pro správu, jako je Správce uživatelů, k přidání nebo odebrání oprávnění pro účty uživatelů a skupin. Správci můžou programově používat funkcemístní autority zabezpečení (LSA)pro práci s oprávněními. Funkce LsaAddAccountRights a LsaRemoveAccountRights přidávají nebo odebírat oprávnění z účtu. Funkce LsaEnumerateAccountRights vypíše oprávnění uložená zadaným účtem. Funkce LsaEnumerateAccountsWithUserRight výčet účtů, které mají zadaná oprávnění.

autorizační konstanty

povolení a zakázání oprávnění v C++