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

В этой статье мы рассмотрим несколько способов, позволяющих управлять правами пользователей на перезагрузку и выключение компьютеров и серверов Windows. По умолчанию пользователи могут перезагружать и выключать только десктопные версии Windows, и не могут перезагрузить сервер (кнопки выключения и перезагрузки не доступны). Возможно ли разрешить пользователю без прав локального администратора перезагружать Windows Server? Возможна и обратная задача – запретить пользователям перезагружать компьютер с Windows 10 или 11, который используется в качестве некого информационного киоска, диспетчерского пульта и т.д.

🎓 Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и "под микроскопом" изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Разрешить (запретить) пользователю перезагрузку 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 winitpro\avivanov

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

ntrights -r SeShutdownPrivilege -u winitpro\avivanov

Или наоборот, вы хотите запретить пользователям десктопной редакции 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 down, включите политику и добавьте в нее вашу группу пользователей и встроенную группу 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 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 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_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown;
  3. Измените значение параметра реестра value на 1;параметр реестр HideShutDown
  4. Это скроет кнопку Выключить компьютер в стартовом меню.скрыть кнопку выключения и перезагрузки в windows
Вы также можете включить этот параметр из командной строки:

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
Если эти параметры не сработали на вашем компьютере, проверьте аналогичные ключи реестра в ветке HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start.

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

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

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

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

🎓 Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и "под микроскопом" изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Предыдущая статья Следующая статья


Комментариев: 3 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)