В этой статье мы рассмотрим несколько способов, позволяющих управлять правами пользователей на перезагрузку и выключение компьютеров и серверов 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 remontkaavivanov
Чтобы запретить пользователю перезагрузку:
ntrights -r SeShutdownPrivilege -u remontkaavivanov
Или наоборот, вы хотите запретить пользователям десктопной редакции 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 do wn, включите политику и добавьте в нее вашу группу пользователей и встроенную группу 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 remontkaavivanov
В результате пользователю будет назначена привилегия 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_MACHINESOFTWAREMicrosoftPolicyManagerdefaultStartHideShutDown;
- Измените значение параметра реестра value на 1 ;
- Это скроет кнопку Выключить компьютер в стартовом меню.
REG ADD "HKLMSOFTWAREMicrosoftPolicyManagerdefaultStartHideShutDown" /v "value" /t REG_DWORD /d 1 /f
Или с помощью командлета PowerShell:
Set-ItemProperty -Path "HKLM:SOFTWAREMicrosoftPolicyManagerdefaultStartHideShutDown" -Name "value" -Value 1
Вы можете скрыть и другие опции в стартовом меню Windows:
- Скрыть кнопку перезагрузка:
REG ADD "HKLMSOFTWAREMicrosoftPolicyManagerdefaultStartHideRestart " /v "value" /t REG_DWORD /d 1 /f
- Скрыть кнопку гибернации:
REG ADD "HKLMSOFTWAREMicrosoftPolicyManagerdefaultStartHideHibernate" /v "value" /t REG_DWORD /d 1 /f
- Скрыть кнопку перевода в спящий режим:
REG ADD "HKLMSOFTWAREMicrosoftPolicyManagerdefaultStartHideSleep" /v "value" /t REG_DWORD /d 1 /f
- Полностью скрыть раздел Shut down or sign out:
REG ADD "HKLMSOFTWAREMicrosoftPolicyManagerdefaultStartHidePowerButton" /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_x000D_Source: User32_x000D_EventID: 1074_x000D_The process wininit.exe (192.168.13.153) has initiated the restart of computer SRV-RDS1 on behalf of user WINITPROusername for the following reason: No title for this reason could be found_x000D_Reason Code: 0x800000ff_x000D_Reason Code: 0x500ff_x000D_Shutdown Type: restart
События выключения компьютера также можно найти по EventID 1074:
The process C:Program FilesVMwareVMware Toolsvmtoolsd.exe (SRV-RDS1) has initiated the shutdown of computer SRV-RDS1 on behalf of user NT AUTHORITYSYSTEM for the following reason: Legacy API shutdown_x000D_Reason Code: 0x80070000_x000D_Shutdown Type: shutdown_x000D_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