В этой статье мы рассмотрим несколько способов, позволяющих управлять правами пользователей на перезагрузку и выключение компьютеров и серверов Windows. По умолчанию пользователи могут перезагружать и выключать только десктопные версии Windows, и не могут перезагрузить сервер (кнопки выключения и перезагрузки не доступны). Возможно ли разрешить пользователю без прав локального администратора перезагружать Windows Server? Возможна и обратная задача – запретить пользователям перезагружать компьютер с Windows 10 или 11, который используется в качестве некого информационного киоска, диспетчерского пульта и т.д.
Разрешить (запретить) пользователю перезагрузку Windows с помощью групповых политик
Права на перезагрузку или выключение Windows можно настроить с помощью политики “Завершение работы системы” (Shut down the system) в секции GPO: Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя (Computer Configuration -> Policies -> Windows Settings -> Security Settings -> User Rights Assignment). Этот параметр GPO позволяет указать пользователей, выполнивших локальных вход, которым разрешено выключать операционную систему.
Обратите, что по-умолчанию права на выключение/перезагрузку Windows различаются в десктопных версиях Windows 10/11 и в редакциях Windows Server.
Откройте редактор локальной политики gpedit.msc и перейдите в указанную выше секцию. Как вы видите, в дестопной версии Windows права на перезагрузку (выключение) компьютера есть у членов локальных групп: Администраторы, Пользователи и Операторы архива.
В Windows Server 2022/2019/2016 выключить или перезагрузить сервер могут только Администраторы или Backup Operators. Это правильно и логично, т.к. у пользователей в подавляющем большинстве случаев не должно быть прав на выключение сервера (даже случайное). Представьте себе RDS сервер, который периодически выключается из-за того, что пользователи случайно нажимают на кнопку выключения в стартовом меню…
На контроллерах домена Active Directory права на выключение Windows делегированы:
- Administrators
- Backup Operators
- Server Operators
- Print Operators
Если у пользователя нет прав на перезагрузку/выключение операционной системы, то при запуске следующей команды появится ошибка:
shutdown –r –t 0
Access is denied.(5)
Если вы хотите разрешить определенному пользователю (без права администратора) перезагружать ваш Windows Server, нужно добавить его учетную запись в эту политику и обновить настройки GPO на компьютере.
ntrights +r SeShutdownPrivilege -u winitpro\avivanov
Чтобы запретить пользователю перезагрузку:
ntrights -r SeShutdownPrivilege -u winitpro\avivanov
Или наоборот, вы хотите запретить пользователям десктопной редакции Windows 10/11 перезагружать компьютер, который выполняет некую серверную функцию. В этом случае вам достаточно удалить группу Users из локальной политики “Завершение работы системы”.
Аналогичным образом вы можете запретить (или разрешить) выключение или перезагрузку компьютеров для всех компьютеров в определённом Organizational Unit (OU) домена Active Directory с помощью доменной политики.
- Создайте в AD группу пользователей grpAllowRestartComputers, которым вы хотите предоставить права на перезагрузку компьютеров. Вы можете создать группу из консоли ADUC (dsa.msc) или PowerShell командлета New-ADGroup. Добавьте в группу пользователей;
- Откройте редактор доменных GPO (gpmc.msc). Выберите OU с компьютерами на которые вы хотите применить политику и выберите Create a GPO in this domain and Link it here;
- Задайте имя политики gpoAllowReboot и отредактируйте ее;
- Перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Security Settings -> User Rights Assignment;
- Откройте параметр Shut down, включите политику и добавьте в нее вашу группу пользователей и встроенную группу Administrators;
- Обновите настройки GPO на целевых компьютерах и проверьте настройки результирующей GPO в консоли
rsop.msc
. Пользователи из вашей группы теперь могут выключить или перезагружать этот хост; - У пользователя в стартовом меню Windows станут доступны опции выключения и перезагрузки Windows.
Разрешить удаленное выключение/перезагрузку Windows
Вы также можете разрешить определенным пользователям перезагружать ваш Windows Server удаленно с помощью команды shutdown или командлета Restart-Computer не предоставляя пользователю права локального администратора, права на локальный вход (если этот метод входа запрещено использовать для входа в Windows), право на RDP входа на сервер под пользователем.
Для этого необходимо добавить учетную запись нужного пользователя в политику “Принудительное удаленное завершение работы” (Force shutdown from a remote system) в той же самой секции GPO Назначение прав пользователя (User Rights Assignment).
По умолчанию выключить сервер удаленном могут только администраторы. Добавьте в политику нужную учетную запись пользователя.
ntrights +r SeRemoteShutdownPrivilege -u winitpro\avivanov
В результате пользователю будет назначена привилегия SeRemoteShutdown и он сможет перезагрузить данный сервер удаленно с помощью команды:
shutdown -m \\msk-repo01 -r -f -t 0
или с помощью PowerShell командлета Restart-Computer:
Restart-Computer –ComputerName msk-repo01 –Force
VERBOSE: Performing the operation "Enable the Remote shutdown access rights and restart the computer." on target ...
Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:
Restart-Computer -ComputerName msk-repo01 -Protocol WSMan
Если у пользователя нет прав подключения к WMI, появится ошибка:
Restart-Computer : Failed to restart the computer srv-rds1 with the following error message: The WS-Management servicecannot process the request. The WMI service returned an 'access denied' error. .
Скрыть кнопки выключения и перезагрузки в Windows
С помощью специального параметры GPO вы можете скрыть от пользователей команды выключения, перезагрузки и гибернации компьютера со стартового экрана и меню Start. Политика называется «Удалить команды Завершение работы, Перезагрузка, Сон, Гибернация и запретить доступ к ним” (Remove and Prevent Access to the Shut Down, Restart, Sleep, and Hibernates commands) и находится в разделе GPO пользователя и компьютера: Конфигурация компьютера (пользователя) -> Административные шаблоны -> Меню “Пуск” и панель задач (Computer Configuration -> Administrative Templates -> Start Menu and Taskbar).
После включения этой политики пользователь сможет завершить работу с Windows, только выполнив логофф. Кнопки выключения, сна и перезагрузки компьютера станут недоступными.
С помощью параметров реестра вы можете скрыть только определенный пункт меню. Например, вы хотите скрыть в стартовом меню только опцию Shutdown, но оставить Restart.
- Запустите редактор реестра
regedit.exe
; - Перейдите в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown;
- Измените значение параметра реестра value на 1;
- Это скроет кнопку Выключить компьютер в стартовом меню.
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown" /v "value" /t REG_DWORD /d 1 /f
Или с помощью командлета PowerShell:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown" -Name "value" -Value 1
Вы можете скрыть и другие опции в стартовом меню Windows:
- Скрыть кнопку перезагрузка:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideRestart " /v "value" /t REG_DWORD /d 1 /f
- Скрыть кнопку гибернации:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideHibernate" /v "value" /t REG_DWORD /d 1 /f
- Скрыть кнопку перевода в спящий режим:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideSleep" /v "value" /t REG_DWORD /d 1 /f
- Полностью скрыть раздел Shut down or sign out:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HidePowerButton" /v "value" /t REG_DWORD /d 1 /f
Обратите внимание, что в Windows Server 2019 и 2022 при назначении прав пользователя, они могут получить ошибку:
You don’t have permission to shutdown or restart this computer.
В этом случае нужно включить в GPO параметр UAC: “User Account Control: Run all administrators in Admin Approval Mode”
Как узнать, кто перезагрузил (выключил) Windows?
Если вы предоставили обычному пользователю права на перезагрузку сервера вы, можете определить кто перезагружал определенный Windows сервер: пользователь или один из администраторов.
Для этого нужно использовать журнал событий Event Viewer (
eventvwr.msс
). Перейдите в раздел Windows Logs -> System и отфильтруйте журнал по событию с Event ID 1074.
Как вы видите, в журнале событий остались события все перезагрузки сервера в хронологическом порядке. В описании события указано время перезагрузки, причина и учетная пользователя запись, которая выполнила рестарт.
Log Name: System Source: User32 EventID: 1074 The process wininit.exe (192.168.13.153) has initiated the restart of computer SRV-RDS1 on behalf of user WINITPRO\username for the following reason: No title for this reason could be found Reason Code: 0x800000ff Reason Code: 0x500ff Shutdown Type: restart
События выключения компьютера также можно найти по EventID 1074:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (SRV-RDS1) has initiated the shutdown of computer SRV-RDS1 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown Reason Code: 0x80070000 Shutdown Type: shutdown Comment:
С помощью простого PowerShell скрипта можно получить список последних 10 событий перезагрузки или выключения компьютера. В событиях указаны имена пользователей и процессы, из которых была инициирована перезагрузка:
Get-EventLog -LogName System |
where {$_.EventId -eq 1074} |select-object -first 10 |
ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode
if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process |ft