Rechte

Ein Recht auf ein Konto, z. B. ein Benutzer- oder Gruppenkonto, kann verschiedene systembezogene Vorgänge auf dem lokalen Computer ausführen, z. B. das Herunterfahren des Systems, das Laden von Gerätetreibern oder das Ändern der Systemzeit. Berechtigungen unterscheiden sich von Zugriffsrechten auf zwei Arten:

  • Berechtigungen steuern den Zugriff auf Systemressourcen und systembezogene Aufgaben, während Zugriffsberechtigungen den Zugriff auf versicherbare Objekte steuern.
  • Ein Systemadministrator weist Benutzer- und Gruppenkonten Berechtigungen zu, während das System zugriff auf ein sicherungsfähiges Objekt basierend auf den Zugriffsrechten im DACL des Objekts gewährt oder verweigert.

Jedes System verfügt über eine Kontodatenbank, die die Berechtigungen speichert, die von Benutzer- und Gruppenkonten gespeichert werden. Wenn sich ein Benutzer anmeldet, erstellt das System ein Zugriffstoken , das eine Liste der Berechtigungen des Benutzers enthält, einschließlich der Benutzerberechtigungen oder Gruppen, zu denen der Benutzer gehört. Beachten Sie, dass die Berechtigungen nur auf den lokalen Computer gelten; Ein Domänenkonto kann verschiedene Berechtigungen auf verschiedenen Computern haben.

Wenn der Benutzer versucht, einen privilegierten Vorgang auszuführen, überprüft das System das Zugriffstoken des Benutzers, um zu ermitteln, ob der Benutzer die erforderlichen Berechtigungen enthält, und falls ja, überprüft es, ob die Berechtigungen aktiviert sind. Wenn der Benutzer diese Tests fehlschlägt, führt das System den Vorgang nicht aus.

Rufen Sie die GetTokenInformation-Funktion auf, um die in einem Zugriffstoken gespeicherten Berechtigungen zu ermitteln, die auch angibt, welche Berechtigungen aktiviert sind. Die meisten Berechtigungen sind standardmäßig deaktiviert.

Die Windows-API definiert eine Reihe von Zeichenfolgenkonstanten, z. B. SE_ASSIGNPRIMARYTOKEN_NAME, um die verschiedenen Berechtigungen zu identifizieren. Diese Konstanten sind auf allen Systemen identisch und werden in Winnt.h definiert. Eine Tabelle der von Windows definierten Berechtigungen finden Sie unter "Berechtigungskonstanten". Die Funktionen, die die Berechtigungen in einem Zugriffstoken abrufen und anpassen, verwenden jedoch den LUID-Typ , um Berechtigungen zu identifizieren. Die LUID-Werte für ein Recht können sich von einem Computer zu einem anderen unterscheiden, und von einem Start auf einen anderen auf demselben Computer. Um die aktuelle LUID abzurufen, die einer der Zeichenfolgenkonstanten entspricht, verwenden Sie die Funktion "LookupPrivilegeValue" . Verwenden Sie die Funktion "LookupPrivilegeName ", um eine LUID in die entsprechende Zeichenfolgenkonstante zu konvertieren.

Das System bietet eine Reihe von Anzeigenamen, die jede der Berechtigungen beschreiben. Dies ist nützlich, wenn Sie eine Beschreibung einer Berechtigung für den Benutzer anzeigen müssen. Verwenden Sie die Funktion "LookupPrivilegeDisplayName ", um eine Beschreibungszeichenfolge abzurufen, die der Zeichenfolgenkonstanten für ein Recht entspricht. Beispiel: Bei Systemen, die US-Englisch verwenden, lautet der Anzeigename für das SE_SYSTEMTIME_NAME-Recht "Systemzeit ändern".

Sie können die Funktion " PrivilegeCheck " verwenden, um zu bestimmen, ob ein Zugriffstoken einen angegebenen Satz von Berechtigungen enthält. Dies ist in erster Linie für Serveranwendungen nützlich, die einen Client imitieren.

Ein Systemadministrator kann Verwaltungstools verwenden, z. B. Benutzer-Manager, um Berechtigungen für Benutzer- und Gruppenkonten hinzuzufügen oder zu entfernen. Administratoren können die Funktionen der lokalen Sicherheitsbehörde (LSA) programmgesteuert verwenden, um mit Berechtigungen zu arbeiten. Die Funktionen LsaAddAccountRights und LsaRemoveAccountRights fügen Berechtigungen aus einem Konto hinzu oder entfernen sie. Die Funktion LsaEnumerateAccountRights listet die Berechtigungen auf, die von einem angegebenen Konto gehalten werden. Mit der Funktion LsaEnumerateAccountsWithUserRight werden die Konten aufgezählt, die ein bestimmtes Recht enthalten.

Autorisierungskonstanten

Aktivieren und Deaktivieren von Berechtigungen in C++