Устанавливаем разрешения для служб Windows
Изложенное далее проверялось на Windows Server 2019 для службы удаленных рабочих столов (TermService).
Что требуется: дать полные права для управления службой удаленных рабочих столов для всех пользователей (для примера).
Скачайте PsTools из пакета Sysinternals.
Используем PsService64 из состава PsTools, перейдя в консоли в папку, куда распаковали PsTools. Опрашиваем текущие права на управление службой удаленных рабочих столов:
> .\PsService64.exe security termservice SERVICE_NAME: TermService DISPLAY_NAME: Службы удаленных рабочих столов ACCOUNT: NT Authority\NetworkService SECURITY: [ALLOW] NT AUTHORITY\СИСТЕМА Query status Query Config Interrogate Enumerate Dependents Pause/Resume Start Stop User-Defined Control Read Permissions [ALLOW] BUILTIN\Administrators All [ALLOW] NT AUTHORITY\ИНТЕРАКТИВНЫЕ Query status Query Config Interrogate Enumerate Dependents User-Defined Control Read Permissions [ALLOW] NT AUTHORITY\СЛУЖБА Query status Query Config Interrogate Enumerate Dependents User-Defined Control Read Permissions
Также опрашиваю права на службу удаленных рабочих столов в специальной нотации с помощью встроенной утилиты в ОС:
sc.exe sdshow termservice D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Этот вывод нам потребуется в дальнейшем, чтобы назначить дополнительные права на службу. Что означают эти обозначения:
Буква ДО СКОБОК: S: — системный список контроля доступа (SACL) D: — дискреционный список контроля доступа (DACL)
Первая буква ПОСЛЕ скобок: Разрешить (A) или Запретить (D).
Далее расшифровка самих прав:
CC — SERVICE_QUERY_CONFIG (query service settings) LC — SERVICE_QUERY_STATUS (get service status) SW — SERVICE_ENUMERATE_DEPENDENTS LO — SERVICE_INTERROGATE CR — SERVICE_USER_DEFINED_CONTROL RC — READ_CONTROL RP — SERVICE_START WP — SERVICE_STOP DT — SERVICE_PAUSE_CONTINUE
Далее, в конце перед закрывающей скобкой либо обозначение группы либо SID:
AU Authenticated Users AO Account operators RU Alias to allow previous Windows 2000 AN Anonymous logon AU Authenticated users BA Built-in administrators BG Built-in guests BO Backup operators BU Built-in users CA Certificate server administrators CG Creator group CO Creator owner DA Domain administrators DC Domain computers DD Domain controllers DG Domain guests DU Domain users EA Enterprise administrators ED Enterprise domain controllers WD Everyone PA Group Policy administrators IU Interactively logged-on user LA Local administrator LG Local guest LS Local service account SY Local system NU Network logon user NO Network configuration operators NS Network service account PO Printer operators PS Personal self PU Power users RS RAS servers group RD Terminal server users RE Replicator RC Restricted code SA Schema administrators SO Server operators SU Service logon user
Далее, открываем обычную консоль от имени администратора. Пусть мы хотим всем пользователям задать все разрешающие права на службу удаленный рабочий стол: (A;;CCLCSWRPWPDTLOCRRC;;;WD), где буква А - разрешить, CCLCSWRPWPDTLOCRRC - это комбинация всех возможных прав (см. расшифровку выше), WD - все пользователи (см. расшифровку выше).
Идея состоит в том, что мы берем вывод утилиты sc.exe sdshow и туда в секцию D: но ДО секции S: добавить наши искомые права, вот так:
> sc sdset termservice "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;WD)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
Далее опрашиваем еще раз службу чтобы проверить, что наши добавленные права возымели силу:
.\PsService64.exe security termservice .... [ALLOW] Все Query status Query Config Interrogate Enumerate Dependents Pause/Resume Start Stop User-Defined Control Read Permissions