Użytkownikom w systemie Windows można przyznawać różne uprawnienia
Uprawnienia określają rodzaj operacji systemowych, które może wykonywać konto użytkownika. Administrator przypisuje uprawnienia do kont użytkowników i grup. Uprawnienia każdego użytkownika obejmują uprawnienia przyznane użytkownikowi i grupom, do których użytkownik należy.
Obecnie jest 35 uprawnień. Niektóre z bardziej interesujących to:
- SeSystemtimePrivilege : Wymagany do modyfikacji czasu systemowego.
- SeTimeZonePrivilege : Wymagany do dostosowania strefy czasowej związanej z zegarem wewnętrznym komputera
- SeBackupPrivilege : To uprawnienie powoduje, że system przyznaje całą kontrolę dostępu do odczytu każdemu plikowi, niezależnie od listy kontroli dostępu (ACL) określonej dla pliku.
- SeCreatePagefilePrivilege : Wymagany do utworzenia pliku stronicowania.
- SeRemoteShutdownPrivilege : Wymagany do zamknięcia systemu za pomocą żądania sieciowego.
- SeDebugPrivilege : Wymagany do debugowania i dostosowania pamięci procesu należącego do innego konta.
Ale interesuje mnie:
- SeShutdownPrivilege : Wymagany do zamknięcia systemu lokalnego.
Zauważyłem, że tak naprawdę nie mam tego przywileju. Z wiersza polecenia z podwyższonym poziomem uprawnień:
>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
...
Jest to potwierdzone podczas używania Eksploratora procesów do sprawdzania tokenu zabezpieczającego podwyższonego procesu uruchomionego jako ja:
A jednak można zamknąć system. Czemu?
Zasady grupy mówią, że powinienem to mieć
Jeśli korzystasz z edytora snapin ( secpol.msc
) edytora lokalnych zasad bezpieczeństwa , możesz zobaczyć, że powinienem mieć uprawnienia:
Wyjaśnieniu przywileju:
Zamknij system
To ustawienie zabezpieczeń określa, którzy użytkownicy zalogowani lokalnie na komputerze mogą zamknąć system operacyjny za pomocą polecenia Zamknij system. Niewłaściwe korzystanie z tego prawa użytkownika może spowodować odmowę usługi.
Domyślnie na stacjach roboczych: administratorzy, operatorzy kopii zapasowych, użytkownicy.
Domyślnie na serwerach: administratorzy, operatorzy kopii zapasowych.
Domyślnie na kontrolerach domeny: administratorzy, operatorzy kopii zapasowych, operatorzy serwerów, operatorzy drukowania.
Jestem użytkownika . Czasami jestem administratorem , a innym razem nie jestem administratorem .
Być może pytanie powinno brzmieć dlaczego nie mam przywileju.
Ale w rzeczywistości nie mam tego przywileju; a jednak kiedy jestem zalogowany lokalnie, mogę zamknąć system lokalny.
Czemu?
@ Mehrdad miał dobrą odpowiedź, którą usunął, co moim zdaniem zasługuje na uwagę i odpowiada na pytanie ładnie i zwięźle:
Ci mają przywilej. Domyślnie jest jedynie wyłączone. Jeśli nie masz przywileju, nie będzie go wcale na liście .
Zauważ, żeSE_PRIVILEGE_REMOVED
różni się od brakuSE_PRIVILEGE_ENABLED
lubSE_PRIVILEGE_ENABLED_BY_DEFAULT
.
Czytanie bonusowe
- MSDN: Stałe uprawnień
- Technet: Zamknij system - uprawnienia użytkownika
źródło
Odpowiedzi:
Masz pozwolenie, ale jest wyłączone . To właśnie mówi PowerShell.
Aby zamknąć system, użyj funkcji Win32API o nazwie
InitiateSystemShutdown
lubExitWindowsEx
:Uwaga: funkcje te:
Jak widać, system Windows sprawdza uprawnienia do wątków (każdy wątek ma token z uprawnieniami). Jeśli zadzwonisz
ExitWindowsEx
bez uprawnienia SE_SHUTDOWN_NAME , funkcja zakończy się niepowodzeniem z błędem:Wątki, które tworzysz domyślnie, dziedziczą twoje uprawnienia; ale program może włączyć wyłączone uprawnienie, które zostało mu przyznane przy użyciu
AdjustTokenPrivileges
:Zmiana uprawnień w tokenie mówi:
Dlaczego więc to uprawnienie jest domyślnie wyłączone? Aby upewnić się, że żaden program nie może przypadkowo zamknąć systemu Windows. Wnioski powinny wyraźnie o to poprosić.
Istnieje starożytna, ale bardzo dobra książka: https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/ o tych wszystkich sprawach.
źródło
Jest tak, ponieważ użytkownik należy do grupy, która ma włączone to uprawnienie.
Aby przekonać się, które grupy:
secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
.SeShutdownPrivilege
wpisu. Zobaczysz (powinieneś) kilka / kilka identyfikatorów SID dla użytkowników i / lub grup, które mają włączone to uprawnienie.Mam na liście trzy krótkie identyfikatory SID. Krótkie identyfikatory SID to zazwyczaj konta / grupy na poziomie komputera. Na przykład jednym z nich jest
S-1-5-32-545
.Za pomocą PowerShell możemy ustalić, które konto / grupa reprezentuje SID:
To powraca
BUILTIN\Users
.Ponieważ jesteś użytkownikiem tego komputera, automatycznie jesteś członkiem tej grupy, co oznacza, że możesz zamknąć komputer.
Pozostałe dwa mam
S-1-5-32-544
iS-1-5-32-551
. Są toBUILTIN\Administrators
grupa standardowa iBUILTIN\Backup Operators
grupa. Która linia z grupami, które widzisz wsecpol.msc
oknie dialogowym.źródło