====== SubInACL: Разрешить пользователю управлять сервисами Windows ====== Появилась задача разрешить учётной записи (группа Users или Power Users) перезапускать определённую службу Windows. Как это можно сделать [[https://docs.microsoft.com/en-US/troubleshoot/windows-server/windows-security/grant-users-rights-manage-services|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 ===== Описание утилиты доступно на сайте [[https://ss64.com/nt/subinacl.html|ss64.com]]. На [[https://www.microsoft.com/en-us/download/confirmation.aspx?id=23510|сайте Microsoft]] ссылка на скачивание уже недоступна. Поэтому скачиваем с rtfm.wiki или из web archive. ^ Файл ^ Размер ^ SHA256 ^ SHA1 ^ | {{ :microsoft:server:subinacl.zip |}} | msi 370 KB, zip 134 KB | 56d0678ba79303f141c2962babba53dfb87205467284e35047cc13ffa720f6c6 | 3199b43ca6ee8cb44b4e07e2b67e9f93b31a846b | | [[https://web.archive.org/web/20190830103837/http://www.microsoft.com/en-us/download/confirmation.aspx?id=23510|Скачать по ссылке из web archive]] |||| Установка {{:microsoft:server:subinacl_1.png?nolink|}} {{:microsoft:server:subinacl_2.png?nolink|}} {{:microsoft:server:subinacl_3.png?nolink|}} Пример. Разрешаем пользователю dx все операции (старт/стоп) для сервиса windows_exporter на хосте с именем rtfm-dev subinacl /service "windows_exporter" /GRANT=rtfm-dev\dx=STOPI {{:microsoft:server:subinacl_cmd_stopi.png?nolink|}} Пояснение ^ 🔑 ^ 🔤 ^ ❓ ^ | 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:server:subinacl_cmd_help.png?nolink|}} Информация [[https://web.archive.org/web/20230315181701/https://learn.microsoft.com/en-US/troubleshoot/windows-server/windows-security/grant-users-rights-manage-services|с сайта Microsoft]] в разделе **Method 3: Use Subinacl.exe** Смысл **Interrogate Service** мне до конца непонятен, но советуют его добавлять. Нашёл упоминание [[https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc742167(v=ws.11)|на сайте 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. [[https://learn.microsoft.com/en-us/sysinternals/downloads/psservice|PsService]] psservice \\rtfm-dev restart windows_exporter 4. [[https://learn.microsoft.com/en-gb/windows/win32/wmisdk/wmic|WMIC]] wmic service windows_exporter call StartService wmic service windows_exporter call StopService 5. [[https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-service?view=powershell-7.3&viewFallbackFrom=powershell-7|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 ===== Программа доступна для свободного скачивания [[https://www.coretechnologies.com/products/ServiceSecurityEditor/#grant-start-stop-service|на сайте coretechnologies.com]] Здесь даже нечего рассказывать. Утилита работает без установки, просто запускаем, выбираем нужную службу, добавляем пользователя и расставляем галочки. {{:microsoft:server:subinacl_sse_1.png?nolink|}} {{:microsoft:server:subinacl_sse_2.png?nolink|}} {{:microsoft:server:subinacl_sse_3.png?nolink|}} ===== Ссылки ===== * https://www.robvanderwoude.com/subinacl.php * https://ss64.com/nt/net-service.html * https://ss64.com/nt/psservice.html * https://ss64.com/nt/sc.html EOM {{tag>microsoft windows windows_server subinacl acl}}