Die Gruppenrichtlinie besagt, dass ich es haben sollte

Die Gruppenrichtlinie besagt, dass ich es haben sollte

Benutzern in Windows können verschiedenePrivilegien

Berechtigungen bestimmen die Art der Systemvorgänge, die ein Benutzerkonto ausführen kann. Ein Administrator weist Benutzer- und Gruppenkonten Berechtigungen zu. Zu den Berechtigungen jedes Benutzers zählen diejenigen, die dem Benutzer selbst und den Gruppen, denen der Benutzer angehört, gewährt werden.

Derzeit gibt es 35 Privilegien. Einige der interessanteren sind:

  • SeSystemtimePrivilege: Erforderlich, um die Systemzeit zu ändern.
  • SeTimeZonePrivileg: Erforderlich, um die Zeitzone der internen Uhr des Computers anzupassen
  • SeBackupPrivilege: Dieses Privileg bewirkt, dass das System allen Dateien uneingeschränkten Lesezugriff gewährt, unabhängig von der für die Datei angegebenen Zugriffskontrollliste (ACL).
  • SeCreatePagefilePrivilege: Erforderlich, um eine Auslagerungsdatei zu erstellen.
  • SeRemoteShutdownPrivilege: Erforderlich, um ein System mithilfe einer Netzwerkanforderung herunterzufahren.
  • SeDebugPrivilege: Erforderlich zum Debuggen und Anpassen des Speichers eines Prozesses, der einem anderen Konto gehört.

Aber das, was mich interessiert, ist:

  • SeShutdownPrivileg: Erforderlich, um ein lokales System herunterzufahren.

Mir ist aufgefallen, dass ich eigentlich nichthabendieses Privileg. Von einer Eingabeaufforderung mit erhöhten Rechten:

>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                  Description                               State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege        Adjust memory quotas for a process        Disabled
SeSecurityPrivilege             Manage auditing and security log          Disabled
SeTakeOwnershipPrivilege        Take ownership of files or other objects  Disabled
   ...
SeShutdownPrivilege             Shut down the system                      Disabled
   ...

Dies wird bestätigt bei der VerwendungProcess Explorerum das Sicherheitstoken eines erhöhten Prozesses zu untersuchen, der unter meinem Namen ausgeführt wird:

Bildbeschreibung hier eingeben

Und dochdürfendas System herunterfahren. Warum?

Die Gruppenrichtlinie besagt, dass ich es haben sollte

Wenn Sie das Snap-In des lokalen Sicherheitsrichtlinien-Editors ( secpol.msc) verwenden, können Sie sehen, dass ichsollenhabe das Privileg:

  • secpol.msc

    • Sicherheitseinstellungen
    • Lokale Richtlinien
    • Zuweisen von Benutzerrechten
    • Fahren Sie das System herunter

      Bildbeschreibung hier eingeben

DerErläuterungdes Privilegs:

Fahren Sie das System herunter

Mit dieser Sicherheitseinstellung legen Sie fest, welche lokal am Computer angemeldeten Benutzer das Betriebssystem mit dem Befehl „Herunterfahren“ herunterfahren können. Der Missbrauch dieses Benutzerrechts kann zu einer Dienstverweigerung führen.

Standardmäßig auf Arbeitsstationen: Administratoren, Sicherungsoperatoren, Benutzer.

Standardmäßig auf Servern: Administratoren, Backup-Operatoren.

Standardmäßig auf Domänencontrollern: Administratoren, Sicherungsoperatoren, Serveroperatoren, Druckoperatoren.

Ich bin einBenutzer. Manchmal bin ich einAdministrator, und manchmal bin ich einNichtAdministrator.

Vielleicht sollte die Frage lauten: Warum?nichtIch habe das Privileg.

Die Realität ist jedoch, dass ich über dieses Privileg nicht verfüge. Dennoch kann ich bei lokaler Anmeldung das lokale System herunterfahren.

Warum?


@Mehrdad hatte eine gute Antwort, die er gelöscht hat, die meiner Meinung nach Aufmerksamkeit verdient und die Frage schön und prägnant beantwortet:

Duhabendas Privileg. Es ist lediglich standardmäßig deaktiviert. Wenn Sie das Privileg nicht hatten, dannes würde überhaupt nicht aufgeführt werden.
Beachten das SE_PRIVILEGE_REMOVEDist etwas anderes als Fehlen SE_PRIVILEGE_ENABLEDoder SE_PRIVILEGE_ENABLED_BY_DEFAULT.

Zusätzliche Lektüre

Antwort1

Sie haben die Erlaubnis, aber es istdeaktiviert. Das ist es, was PowerShell Ihnen sagt.

Zum Herunterfahren des Systems verwenden Sie die Win32API-Funktion namensInitiateSystemShutdownoderExitWindowsEx:

ExitWindowsEx(EWX_POWEROFF, 0);

Diese Funktionen beachten:

Um den lokalen Computer herunterzufahren, muss der aufrufendeFadenmuss über das Privileg SE_SHUTDOWN_NAME verfügen. StandardmäßigBenutzer können den SE_SHUTDOWN_NAME aktivierenauf dem Computer, bei dem sie angemeldet sind, verfügen und Administratoren können das Privileg „SE_REMOTE_SHUTDOWN_NAME“ auf Remotecomputern aktivieren.

Wie Sie sehen, prüft WindowsFadenPrivilegien (jeder Thread hat Token mit Privilegien). Wenn Sie ExitWindowsExohne dieSE_SHUTDOWN_NAMEBerechtigung wird die Funktion mit dem Fehler fehlschlagen:

Error code: 1314
A required privilege is not held by the client

Von Ihnen erstellte Threads erben standardmäßig Ihre Privilegien. Ein Programm kann jedoch ein deaktiviertes Privileg aktivieren, das ihm gewährt wurde, indemAdjustTokenPrivileges:

TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = LookupPrivilegeValue(NULL, "SeShutdownPrivilege");
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

HANDLE processToken = OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES);
AdjustTokenPrivileges(processToken, FALSE, &tp, 0, NULL, NULL);
CloseHandle(processToken);

Ändern der Berechtigungen in einem Tokensagt:

AdjustTokenPrivileges kann keine Berechtigungen hinzufügen oder entfernenvom Token. Es kannnur vorhandene Privilegien aktivieren, die derzeit deaktiviert sindoder deaktivieren Sie bestehende Berechtigungen, die derzeit aktiviert sind


Warum ist dieses Privileg standardmäßig deaktiviert? Um sicherzustellen, dass kein Programm Windows versehentlich herunterfahren kann. Anwendungen sollten dies explizit anfordern.

Es gibt ein altes, aber sehr gutes Buch:https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/über all das Zeug.

Antwort2

Dies liegt daran, dass Ihr Benutzer zu einer Gruppe gehört, für die dieses Privileg aktiviert ist.

Um selbst zu sehen, welche Gruppe(n):

  • Öffnen Sie als Administrator eine PowerShell-Eingabeaufforderung (oder Eingabeaufforderung).
  • Laufen secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG.
  • Sehen Sie sich den Inhalt von OutFile.cfg in Notepad oder einem ähnlichen Programm an und suchen Sie nach dem SeShutdownPrivilegeEintrag. Sie werden (sollten) ein paar SIDs für Benutzer und/oder Gruppen sehen, für die dieses Privileg aktiviert ist.

Ich habe also drei kurze SIDs aufgelistet. Kurze SIDs sind normalerweise Konten/Gruppen auf Computerebene. Eine davon ist beispielsweise S-1-5-32-545.

Mithilfe von PowerShell können wir ermitteln, welches Konto/welche Gruppe diese SID repräsentiert:

$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-32-545")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value

Dies gibt zurück BUILTIN\Users.

Da Sie ein Benutzer dieses Computers sind, sind Sie automatisch Mitglied dieser Gruppe und können den Computer herunterfahren.

Die anderen beiden, die ich habe S-1-5-32-544, sind und S-1-5-32-551. Dies sind die Standardgruppe BUILTIN\Administratorsund die BUILTIN\Backup OperatorsGruppe. Diese stimmen mit den Gruppen überein, die Sie im secpol.mscDialogfeld sehen.

verwandte Informationen