Содержание
SubInACL: Разрешить пользователю управлять сервисами Windows
Появилась задача разрешить учётной записи (группа Users или Power Users) перезапускать определённую службу Windows.
Как это можно сделать How to grant users rights to manage services по мнению Microsoft
- Group Policy
- Security Templates
- Консольная утилита SubInACL (сейчас этот пункт убрали, но можно посмотреть в web archive).
Или же GUI вариант Service Security Editor. Это, как говорят англичане, "easy peasy lemon squeezy".
Последние два варианта и рассмотрим, как требующие минимальных усилий.
SubInACL
Описание утилиты доступно на сайте ss64.com.
На сайте Microsoft ссылка на скачивание уже недоступна.
Поэтому скачиваем с rtfm.wiki или из web archive.
Файл | Размер | SHA256 | SHA1 |
---|---|---|---|
subinacl.zip | msi 370 KB, zip 134 KB | 56d0678ba79303f141c2962babba53dfb87205467284e35047cc13ffa720f6c6 | 3199b43ca6ee8cb44b4e07e2b67e9f93b31a846b |
Скачать по ссылке из web archive |
Установка
SubInACL 1
SubInACL 2
SubInACL 3
Пример. Разрешаем пользователю dx все операции (старт/стоп) для сервиса windows_exporter на хосте с именем rtfm-dev
subinacl /service "windows_exporter" /GRANT=rtfm-dev\dx=STOPI
Пояснение
🔑 | 🔤 | ❓ |
---|---|---|
S | S TOPI | Query Service Status |
T | S T OPI | Start Service |
O | ST O PI | Stop Service |
P | STO P I | Pause/Continue Service |
I | STOP I | Interrogate Service |
Информация с сайта Microsoft в разделе Method 3: Use Subinacl.exe
Смысл Interrogate Service мне до конца непонятен, но советуют его добавлять.
Нашёл упоминание на сайте Microsoft, что немного проясняет ситуацию
Sending INTERROGATE to a service causes the service to update its status with the Service Control Manager.
Пример вывода
sc \\rtfm-dev interrogate "windows_exporter" SERVICE_NAME: windows_exporter TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
Чтобы убрать права к службе используем REVOKE
subinacl /service "windows_exporter" /REVOKE=rtfm-dev\dx=
Помимо GRANT и REVOKE есть также DENY.
Командную строку необходимо запустить от имени администратора иначе subinacl не сможет внести изменения
SeSecurityPrivilege : Access is denied. WARNING :Unable to set SeSecurityPrivilege privilege. This privilege may be required. Error OpenSCManager : Access is denied. WARNING : /grant=rtfm-dev\dx=stopi : No previous object opened
Рекомендую тренироваться в тестовой среде т.к. что-то сломать с помощью subinacl довольно легко.
Как перезапустить сервис
SC, NET, PsService, WMIC, PowerShell, GUI
1. SC (service control)
sc start windows_exporter sc stop windows_exporter
2. NET
Старт
C:\>net start windows_exporter The Windows Exporter service is starting. The Windows Exporter service was started successfully.
Стоп
C:\>net stop windows_exporter
The Windows Exporter service is stopping.
The Windows Exporter service was stopped successfully.
Рестарт
C:\>net stop windows_exporter && net start windows_exporter The Windows Exporter service is stopping. The Windows Exporter service was stopped successfully. The Windows Exporter service is starting. The Windows Exporter service was started successfully.
3. PsService
psservice \\rtfm-dev restart windows_exporter
4. WMIC
wmic service windows_exporter call StartService wmic service windows_exporter call StopService
5. PowerShell
PS C:\> Start-Service -Name windows_exporter -Verbose VERBOSE: Performing the operation "Start-Service" on target "Windows Exporter (windows_exporter)".
PS C:\> Stop-Service -Name windows_exporter -Verbose VERBOSE: Performing the operation "Stop-Service" on target "Windows Exporter (windows_exporter)".
PS C:\> Restart-Service -Name windows_exporter -Verbose VERBOSE: Performing the operation "Restart-Service" on target "Windows Exporter (windows_exporter)".
6. GUI (service.msc)
Тут всё понятно.
Service Security Editor
Программа доступна для свободного скачивания на сайте coretechnologies.com
Здесь даже нечего рассказывать. Утилита работает без установки, просто запускаем, выбираем нужную службу, добавляем пользователя и расставляем галочки.
ServiceEditor1
ServiceEditor2
ServiceEditor3
Обсуждение