
В этой статье мы рассмотрим несколько способов управления правами неадминистративных пользователей на перезагрузку или выключение рабочих станций или серверов Windows. По умолчанию непривилегированные пользователи могут перезагружать и выключать только настольные версии Windows, и не могут перезагружать хост Windows Server (кнопки выключения и перезагрузки недоступны в меню Пуск). Возможно ли разрешить пользователю без привилегий локального администратора перезагружать Windows Server? Есть и обратная задача — как запретить пользователям перезагружать компьютер с Windows 10 или 11, который используется в качестве информационного киоска, диспетчерской консоли и т. д.
Как разрешить или запретить параметры выключения/перезагрузки в Windows с помощью GPO
Вы можете установить разрешения на перезагрузку или выключение Windows с помощью параметра Выключить систему параметр в разделе GPO Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователей. Этот параметр GPO позволяет указать, какие локально вошедшие в систему пользователи могут выключать операционную систему.
Обратите внимание, что разрешения по умолчанию на перезагрузку/выключение для настольных версий Windows 10/11 и редакций Windows Server отличаются.
Откройте редактор локальной групповой политики (gpedit.msc) и перейдите в указанный выше раздел. Как вы можете видеть, члены локальных групп Администраторы, Пользователи и Резервные операторы имеют право выключать/перезагружать компьютер, на котором выполняется Windows 10 или 11.
На сайте Windows Server 2022/2019/2016, только Администраторы или Резервные операторы может выключить или перезапустить сервер. Это разумно, поскольку в большинстве случаев пользователь, не являющийся администратором, не должен иметь привилегий для выключения сервера (даже случайного). Представьте себе хост фермы RDS, который часто выключается из-за того, что пользователи случайно нажимают на кнопку «Shutdown» в меню «Пуск»…
На контроллерах домена Active Directory права на выключение Windows делегируются:
- Администраторы
- Операторы резервного копирования
- Операторы сервера
- Операторы печати
Если у пользователя нет прав на перезагрузку/выключение операционной системы, то при выполнении следующей команды возникнет ошибка:
shutdown –r –t 0
Access is denied.(5)
Если вы хотите разрешить определенному пользователю (без прав администратора) перезагружать ваш Windows Server, вам нужно добавить его учетную запись в эту политику и обновить параметры GPO на компьютере.
ntrights +r SeShutdownPrivilege -u woshub\j.smith
Чтобы запретить пользователю выключать или перезапускать Windows:
ntrights -r SeShutdownPrivilege -u woshub\j.smith
Или, наоборот, можно запретить пользователям рабочих станций под управлением настольной версии Windows 10/11 перезапускать компьютер, выполняющий какую-либо серверную функцию. В этом случае просто удалите Пользователи группа из локальной политики Выключите систему.
Аналогичным образом можно запретить (или разрешить) операции выключения/перезагрузки для неадминистративных пользователей на всех компьютерах в определенной организационной единице (OU) домена Active Directory с помощью GPO домена.
- Создайте grpAllowRestartComputers группа пользователей в AD, которой вы хотите предоставить разрешения на перезапуск компьютеров. Вы можете создать новую группу с помощью оснастки ADUC (
dsa.msc
) илиNew-ADGroup
Команда PowerShell. Добавьте пользователей в группу; - Откройте консоль управления групповой политикой домена (
gpmc.msc
). Выберите OU с компьютерами, к которым вы хотите применить политику, и выберите Создать GPO в этом домене и связать его здесь; - Установите имя GPO (gpoAllowReboot) и отредактируйте его;
- Перейдите в раздел Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Назначение прав пользователей;
- Откройте Выключить , включите политику и добавьте целевую группу (
grpAllowRestartComputers
) и встроеннуюAdministrators
группа; - Обновите параметры GPO на целевых компьютерах и проверьте полученные параметры GPO с помощью программы
rsop.msc
оснасткой. Теперь пользователи вашей группы могут выключать или перезагружать этот узел; - Опции выключения и перезагрузки операционной системы появятся в пользовательском меню «Пуск».
Разрешение удаленного выключения/перезапуска без прав администратора
Вы можете разрешить некоторым пользователям, не являющимся администраторами, удаленно перезапускать ваш Windows Server с помощью функции shutdown
без предоставления им прав локального администратора, разрешения на вход через Remote Desktop (RDP) или разрешения на локальный вход (если этот способ входа запрещен).
Чтобы сделать это, добавьте учетную запись пользователя в Принудительное завершение работы удаленной системы Опция групповой политики в том же разделе GPO (Назначение прав пользователей).
По умолчанию удаленно выключать/перезапускать сервер могут только администраторы. Добавьте учетную запись пользователя в политику.
ntrights +r SeRemoteShutdownPrivilege -u woshub\j.smith
После этого пользователь получит SeRemoteShutdown привилегию и сможете удаленно перезапустить сервер с помощью команды:
shutdown -m \\hamb-rds01 -r -f -t 0
Или с помощью команды Restart-Computer PowerShell:
Restart-Computer –ComputerName hamb-rds01 –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 hamb-rds01 -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 называется Удаление и предотвращение доступа к командам Shut Down, Restart, Sleep и Hibernate и находится в разделе Конфигурация пользователя -> Административные шаблоны -> Меню «Пуск» и панель задач
После включения этой политики пользователь сможет только отключить текущий сеанс или воспользоваться командой logoff
команду. Кнопки выключения, сна и перезагрузки станут недоступны.
С помощью некоторых настроек реестра можно скрыть только определенный пункт из меню «Питание/выключение» в Windows. Например, вы хотите скрыть только пункт «Выключение» в меню «Пуск», но сохранить пункт «Перезагрузка».
- Откройте редактор реестра (
regedit.exe
); - Перейти к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\Start\HideShutDown;
- Изменить Значение вариант 1;
- Это позволит скрыть только опцию «Завершение работы» из меню «Пуск» 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:
- Скрыть только тр Перезапустить опция в Windows:
REG ADD "HKLM\SOFTWARE\Microsoft\PolicyManager\default\Start\HideRestart " /v "value" /t REG_DWORD /d 1 /f
- Скрыть Hibernate опция из меню «Пуск» в Windows: R
EG 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
- Чтобы полностью отключить Питание и удалите опцию «Выключить или выйти из системы» из меню WinX:
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.
В этом случае необходимо включить параметр UAC «Контроль учетных записей пользователей: Запускать всех администраторов в режиме одобрения администратора» в GPO:
Как узнать, кто перезапустил/выключил сервер Windows
Если вы предоставили разрешение на перезагрузку компьютера пользователю, не являющемуся администратором, вы можете захотеть узнать, кто перезапустил Windows Server: пользователь или один из администраторов.
Используйте средство просмотра событий (eventvwr.msc
) для поиска журналов отключения в Windows. Перейдите к Журналы Windows -> Система и отфильтруйте текущий журнал по идентификатору события 1074.
Как вы можете видеть, в журнале в хронологическом порядке отображаются события перезапуска сервера. Описание события включает время перезапуска, причину и учетную запись пользователя, перезапустившего хост.
Log Name:SystemSource: User32 EventID: 1074 The process C:\Windows\system32\shutdown.exe (BE-BAK01) has initiated the restart of computer MUN-BAK01 on behalf of user corp\jsmith for the following reason: No title for this reason could be foundReason Code: 0x800000ff Reason Code: 0x500ff Shutdown Type: restart Comment:
Вы можете получить информацию о последних событиях выключения Windows, используя тот же идентификатор события 1076:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MUN-BAK1) has initiated the shutdown of computer MUN-BAK1 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown Reason Code: 0x80070000 Shutdown Type: shutdown Comment:
Используйте следующий простой сценарий PowerShell для составления списка последних десяти событий перезагрузки и выключения компьютера. Этот список содержит имена пользователей и процессов, с которых была инициирована перезагрузка.
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