Как разрешить (запретить) обычному пользователю перезагрузку (выключение) Windows?

В этой статье мы рассмотрим несколько способов, позволяющих управлять правами пользователей на перезагрузку и выключение компьютеров и серверов 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 перезагрузку

В Windows Server 2022/2019/2016 выключить или перезагрузить сервер могут только Администраторы или Backup Operators . Это правильно и логично, т.к. у пользователей в подавляющем большинстве случаев не должно быть прав на выключение сервера (даже случайное). Представьте себе RDS сервер , который периодически выключается из-за того, что пользователи случайно нажимают на кнопку выключения в стартовом меню…

Shut down the system - политика

На контроллерах домена Active Directory права на выключение Windows делегированы:

  • Administrators
  • Backup Operators
  • Server Operators
  • Print Operators

Если у пользователя нет прав на перезагрузку/выключение операционной системы, то при запуске следующей команды появится ошибка:

shutdown –r –t 0

Access is denied.(5)

команда shutdown в windows доступ запрещен

Если вы хотите разрешить определенному пользователю (без права администратора) перезагружать ваш Windows Server, нужно добавить его учетную запись в эту политику и обновить настройки GPO на компьютере .

Вы можете вручную предоставить права на локальное выключение компьютера с помощью старой утилиты ntrights из Windows Server 2003 Resource Kit:

ntrights +r SeShutdownPrivilege -u remontkaavivanov

Чтобы запретить пользователю перезагрузку:

ntrights -r SeShutdownPrivilege -u remontkaavivanov

Или наоборот, вы хотите запретить пользователям десктопной редакции Windows 10/11 перезагружать компьютер, который выполняет некую серверную функцию. В этом случае вам достаточно удалить группу Users из локальной политики “Завершение работы системы”.

Аналогичным образом вы можете запретить (или разрешить) выключение или перезагрузку компьютеров для всех компьютеров в определённом Organizational Unit (OU) домена Active Directory с помощью доменной политики.

  1. Создайте в AD группу пользователей grpAllowRestartComputers, которым вы хотите предоставить права на перезагрузку компьютеров. Вы можете создать группу из консоли ADUC (dsa.msc) или PowerShell командлета New-ADGroup . Добавьте в группу пользователей;
  2. Откройте редактор доменных GPO (gpmc.msc) . Выберите OU с компьютерами на которые вы хотите применить политику и выберите Create a GPO in this domain and Link it here ; создать новую GPO
  3. Задайте имя политики gpoAllowReboot и отредактируйте ее;
  4. Перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Security Settings -> User Rights Assignment;
  5. Откройте параметр Shut do wn, включите политику и добавьте в нее вашу группу пользователей и встроенную группу Administrators; групповая политика разрешить перезагрузку windows
  6. Обновите настройки GPO на целевых компьютерах и проверьте настройки результирующей GPO в консоли rsop.msc . Пользователи из вашей группы теперь могут выключить или перезагружать этот хост; результирующая групповая политика в windows
  7. У пользователя в стартовом меню Windows станут доступны опции выключения и перезагрузки Windows. показать пункт перезагрузки в меню Windows пользователя

Разрешить удаленное выключение/перезагрузку Windows

Вы также можете разрешить определенным пользователям перезагружать ваш Windows Server удаленно с помощью команды shutdown или командлета Restart-Computer не предоставляя пользователю права локального администратора, права на локальный вход (если этот метод входа запрещено использовать для входа в Windows ), право на RDP входа на сервер под пользователем .

Для этого необходимо добавить учетную запись нужного пользователя в политику “ Принудительное удаленное завершение работы ” (Force shutdown from a remote system) в той же самой секции GPO Назначение прав пользователя (User Rights Assignment).

По умолчанию выключить сервер удаленном могут только администраторы. Добавьте в политику нужную учетную запись пользователя.

политика Принудительное удаленное завершение работы” (Force shutdown from a remote system

Также вы можете предоставить право SeRemoteShutdownPrivilege с помощью утилиты ntrights:

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 PowerShell Just Enough Administration (JEA) .

Скрыть кнопки выключения и перезагрузки в 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, только выполнив логофф. Кнопки выключения, сна и перезагрузки компьютера станут недоступными.

пользователю недоступны кнопки выключения и перезагрузки windows

С помощью параметров реестра вы можете скрыть только определенный пункт меню. Например, вы хотите скрыть в стартовом меню только опцию Shutdown, но оставить Restart.

  1. Запустите редактор реестра regedit.exe ;
  2. Перейдите в раздел HKEY_LOCAL_MACHINESOFTWAREMicrosoftPolicyManagerdefaultStartHideShutDown;
  3. Измените значение параметра реестра value на 1 ; параметр реестр HideShutDown
  4. Это скроет кнопку Выключить компьютер в стартовом меню. скрыть кнопку выключения и перезагрузки в windows
Вы также можете включить этот параметр из командной строки:

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
Если эти параметры не сработали на вашем компьютере, проверьте аналогичные ключи реестра в ветке HKLMSOFTWAREMicrosoftPolicyManager current deviceStart.

Обратите внимание, что в 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 .

event viewer 1074 событие перезагрузки windows

В статье Анализ логов RDP подключений мы подробно рассматривали использование журнала событий для получения информации о удаленном RDP доступе пользователей.

Как вы видите, в журнале событий остались события все перезагрузки сервера в хронологическом порядке. В описании события указано время перезагрузки, причина и учетная пользователя запись, которая выполнила рестарт.

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

причина перезагрузки windows в журнале событий

События выключения компьютера также можно найти по 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

powershell скрипт найти кто перезагрузил Windows

EnglishRussianUkrainian