Буквально сегодня понадобилось дать человеку возможность перезапускать тестовый вебсервер под виндой.
Права админа давать естественно давать не хочется.
«Мощный» юзер не подходит.
Способ первый:
И тут на помощь приходит technet, который расcказывает про sc.
В данном случае нас интересуют 2 команды:
sc sdshow — показывает права
sc sdset — устанавливает права
Просмотр установленных прав у сервиса:
sc sdshow ABBYY.ProcStation.FlexiCapture.10.0 sc sdshow ABBYY.ProcServer.FlexiCapture.10.0 sc sdshow ABBYY.Licensing.FlexiCapture.Standard.10.0
Вывод команды sc:
>D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA) (A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU) S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
S: - System Access Control List (SACL).
D: - Discretionary ACL (DACL) - здесь указываются права для всех и всего.
Первая буква после скобок означает разрешаем (A, Allow) или запрещаем (D, Deny).
Мы разрешаем:
(A;;;;;)
И потом видим комбинации из двух букв:
CC - SERVICE_QUERY_CONFIG LC - SERVICE_QUERY_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
По сути, нас будут интересовать последние три опции:
(A;;RPWPDT;;;)
Последние 2 буквы обозначают кому мы разрешаем или запрещаем:
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 + к этому списку можно явно указать пользователя по SID'у.
Для получения SID пользователя можно воспользоваться PowerShell, указав логин пользователя:
$name = "ababkin" (New-Object System.Security.Principal.NTAccount($name)).Translate([System.Security.Principal.SecurityIdentifier]).value
Вывод скрипта:
S-1-5-21-61352674-892392994-1602391049-1004
В итоге получаем строку для пользователя:
(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1004)
Окончательно команда будет выглядеть так:
sc sdset ABBYY.ProcStation.FlexiCapture.10.0 D:(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1020)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1004)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1010)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)sc sdset ABBYY.ProcServer.FlexiCapture.10.0 D:(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1020)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1004)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1010)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)sc sdset ABBYY.Licensing.FlexiCapture.Standard.10.0 D:(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1020)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1004)(A;;RPWPDT;;;S-1-5-21-61352674-892392994-1602391049-1010)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Способ второй:
Используем ПО - svcadmin
Оставьте заявку и мы подробно ответим на все Ваши вопросы!
