Rechte

Eine Berechtigung ist das Recht eines Kontos, z. B. eines Benutzer- oder Gruppenkontos, um verschiedene systembezogene Vorgänge auf dem lokalen Computer auszufü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 Zugriffsrechte den Zugriff auf sicherungsfähige Objekte steuern.
  • Ein Systemadministrator weist Benutzer- und Gruppenkonten Berechtigungen zu, während das System basierend auf den Zugriffsrechten, die in den ACEs in der DACL des Objekts gewährt werden, den Zugriff auf ein sicherungsfähiges Objekt gewährt oder verweigert.

Jedes System verfügt über eine Kontodatenbank, in der die Berechtigungen 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 Berechtigungen, die dem Benutzer oder Gruppen gewährt werden, zu denen der Benutzer gehört. Beachten Sie, dass die Berechtigungen nur für den lokalen Computer gelten. Ein Domänenkonto kann auf verschiedenen Computern über unterschiedliche Berechtigungen verfügen.

Wenn der Benutzer versucht, einen privilegierten Vorgang auszuführen, überprüft das System das Zugriffstoken des Benutzers, um zu bestimmen, ob der Benutzer über die erforderlichen Berechtigungen verfügt, und wenn ja, überprüft es, ob die Berechtigungen aktiviert sind. Wenn der Benutzer diese Tests nicht erfolgreich durchführt, führt das System den Vorgang nicht aus.

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

Die Windows-API definiert einen Satz 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 eine Berechtigung können sich von Computer zu Computer und von Start zu Start auf demselben Computer unterscheiden. Um die aktuelle LUID abzurufen, die einer der Zeichenfolgenkonstanten entspricht, verwenden Sie die Funktion LookupPrivilegeValue . Verwenden Sie die LookupPrivilegeName-Funktion , um eine LUID in die entsprechende Zeichenfolgenkonstante zu konvertieren.

Das System stellt eine Reihe von Anzeigenamen bereit, die die einzelnen Berechtigungen beschreiben. Diese sind nützlich, wenn Sie dem Benutzer eine Beschreibung einer Berechtigung anzeigen müssen. Verwenden Sie die LookupPrivilegeDisplayName-Funktion , um eine Beschreibungszeichenfolge abzurufen, die der Zeichenfolgenkonstante für eine Berechtigung entspricht. Auf Systemen, die US-Englisch verwenden, lautet der Anzeigename für das SE_SYSTEMTIME_NAME-Recht beispielsweise "Ändern der Systemzeit".

Sie können die PrivilegeCheck-Funktion verwenden, um zu bestimmen, ob ein Zugriffstoken einen angegebenen Berechtigungssatz enthält. Dies ist in erster Linie für Serveranwendungen nützlich, die die Identität eines Clients annehmen.

Ein Systemadministrator kann Verwaltungstools wie den Benutzer-Manager verwenden, um Berechtigungen für Benutzer- und Gruppenkonten hinzuzufügen oder zu entfernen. Administratoren können programmgesteuert die LSA-Funktionen ( Local Security Authority ) verwenden, um mit Berechtigungen zu arbeiten. Mit den Funktionen LsaAddAccountRights und LsaRemoveAccountRights werden Berechtigungen für ein Konto hinzugefügt oder entfernt. Die LsaEnumerateAccountRights-Funktion listet die Berechtigungen eines angegebenen Kontos auf. Die LsaEnumerateAccountsWithUserRight-Funktion listet die Konten auf, die über eine angegebene Berechtigung verfügen.

Autorisierungskonstanten

Aktivieren und Deaktivieren von Berechtigungen in C++