RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
microsoft:server:subinacl

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

microsoft:server:subinacl [2023/09/08 14:36] – создано dxmicrosoft:server:subinacl [2023/09/08 14:40] (текущий) dx
Строка 1: Строка 1:
 +====== 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]] ||||
 +
 +Установка
 +
 +<tabbox SubInACL 1> 
 +{{:microsoft:server:subinacl_1.png?nolink|}}
 +<tabbox SubInACL 2>
 +{{:microsoft:server:subinacl_2.png?nolink|}}
 +<tabbox SubInACL 3>
 +{{:microsoft:server:subinacl_3.png?nolink|}}
 +</tabbox>
 +
 +Пример. Разрешаем пользователю dx все операции (старт/стоп) для сервиса windows_exporter на хосте с именем rtfm-dev
 +
 +<code batch>subinacl /service "windows_exporter" /GRANT=rtfm-dev\dx=STOPI</code>
 +
 +{{:microsoft:server:subinacl_cmd_stopi.png?nolink|}}
 +
 +Пояснение
 +
 +^ 🔑  ^ 🔤 ^ ❓ ^
 +| S   | <wrap em>S</wrap> TOPI    | Query Service Status   |
 +| T   | S <wrap em>T</wrap> OPI   | Start Service          |
 +| O   | ST <wrap em>O</wrap> PI   | Stop Service           |
 +| P   | STO <wrap em>P</wrap> I   | Pause/Continue Service |
 +| I   | STOP <wrap em>I</wrap>    | 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.//
 +
 +Пример вывода
 +
 +<code batch>
 +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
 +</code>
 +
 +Чтобы убрать права к службе используем REVOKE
 +
 +<code batch>subinacl /service "windows_exporter" /REVOKE=rtfm-dev\dx=</code>
 +
 +Помимо GRANT и REVOKE есть также DENY.
 +
 +Командную строку необходимо запустить от имени администратора иначе subinacl не сможет внести изменения
 +
 +<code>
 +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
 +</code>
 +
 +Рекомендую тренироваться в тестовой среде т.к. что-то сломать с помощью subinacl довольно легко.
 +
 +===== Как перезапустить сервис =====
 +
 +SC, NET, PsService, WMIC, PowerShell, GUI
 +
 +1. SC (service control)
 +
 +<code batch>
 +sc start windows_exporter
 +sc stop windows_exporter
 +</code>
 +
 +2. NET
 +
 +Старт
 +
 +<code batch>
 +C:\>net start windows_exporter
 +The Windows Exporter service is starting.
 +The Windows Exporter service was started successfully.
 +</code>
 +
 +Стоп
 +
 +<code batch>
 +C:\>net stop windows_exporter
 +The Windows Exporter service is stopping.
 +The Windows Exporter service was stopped successfully.
 +</code>
 +
 +Рестарт
 +
 +<code batch>
 +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.
 +</code>
 +
 +3. [[https://learn.microsoft.com/en-us/sysinternals/downloads/psservice|PsService]]
 +
 +<code batch>
 +psservice \\rtfm-dev restart windows_exporter
 +</code>
 +
 +4. [[https://learn.microsoft.com/en-gb/windows/win32/wmisdk/wmic|WMIC]]
 +
 +<code batch>
 +wmic service windows_exporter call StartService
 +wmic service windows_exporter call StopService
 +</code>
 +
 +5. [[https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-service?view=powershell-7.3&viewFallbackFrom=powershell-7|PowerShell]]
 +
 +<code batch>
 +PS C:\> Start-Service -Name windows_exporter -Verbose
 +VERBOSE: Performing the operation "Start-Service" on target "Windows Exporter (windows_exporter)".
 +</code>
 +
 +<code batch>
 +PS C:\> Stop-Service -Name windows_exporter -Verbose
 +VERBOSE: Performing the operation "Stop-Service" on target "Windows Exporter (windows_exporter)".
 +</code>
 +
 +<code batch>
 +PS C:\> Restart-Service -Name windows_exporter -Verbose
 +VERBOSE: Performing the operation "Restart-Service" on target "Windows Exporter (windows_exporter)".
 +</code>
 +
 +6. GUI (service.msc)
 +
 +Тут всё понятно.
 +
 +===== Service Security Editor =====
 +
 +Программа доступна для свободного скачивания [[https://www.coretechnologies.com/products/ServiceSecurityEditor/#grant-start-stop-service|на сайте coretechnologies.com]]
 +
 +Здесь даже нечего рассказывать. Утилита работает без установки, просто запускаем, выбираем нужную службу, добавляем пользователя и расставляем галочки.
 +
 +<tabbox ServiceEditor1>
 +{{:microsoft:server:subinacl_sse_1.png?nolink|}}
 +<tabbox ServiceEditor2> 
 +{{:microsoft:server:subinacl_sse_2.png?nolink|}}
 +<tabbox ServiceEditor3> 
 +{{:microsoft:server:subinacl_sse_3.png?nolink|}}
 +</tabbox>
 +
 +===== Ссылки =====
 +
 +  * 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}}