Управление правами на службы в Windows

По умолчанию обычные пользователи, не обладающие правами администратора системы, не могут управлять системными (и большинством прикладных) службами Windows. Это означает, что они не могут останавливать, запускать, изменять настройки и разрешения таких служб.

В некоторых случаях все-таки требуется, чтобы у пользователя были права на перезапуск и управление определенными службами. В этой статье мы разберем несколько способов управления правами на службы Windows. В частности мы покажем, как предоставить обычному пользователю, без прав администратора, права на запуск и остановку определенной службы.

Предположим, нам нужно предоставить доменной учетной записи contoso\tuser права на перезапуск службы печати (Print Spooler) с системным именем Spooler.

Простого и удобного встроенного инструмента для управления разрешениями служб в Windows нет. Мы рассмотрим несколько способ предоставления пользователю прав на службу:

Содержание:

Какой из них проще и удобнее – решать Вам

Стандартная утилита SC.exe (Service controller)

Стандартный, встроенный в Windows способ управления правами на службы системы предусматривает использование утилиты sc.exe (Service Controller)

Примечание. Пример использования sc.exe для ручного удаления службы в Windows

Главная, проблема – зубодробительный синтаксис формата предоставления прав на сервис (формат SDDL). К примеру, права пользователю могут быть предоставлены следующей конструкцией:

sc sdset Spooler "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

В общем, такая команда способна надолго лишить веру в человечность у любого системного администратора. Не будем подробно рассматривать этот метод раздачи прав на службы (тем кто нужно, сам раскопает). Отметим лишь, что с команда sc sdshow – позволяет отобразить текущие разрешения на сервис, а sc sdset – изменить дескриптор безопасности сервиса.

SubInACL – утилита Руссиновича

Гораздо проще воспользоваться консольной утилитой SubInACL Марка Руссиновича (права на которую вместе с автором теперь принадлежат Microsoft). Синтаксис этой утилиты гораздо проще и удобнее для восприятия. Как предоставить права перезапуска на службу с помощью SubInACL:

  1. Скачайте msi со страницы (https://www.microsoft.com/en-us/download/details.aspx?id=23510) и установите ее на целевой системе.SubInACL - управление правами служб
  2. В командной строке с правами администратора перейдем в каталог с утилитой:
    cd "C:\Program Files (x86)\Windows Resource Kits\Tools\"
  3. Выполним команду:
    subinacl.exe /service Spooler /grant=contoso\tuser=PTO
    subinacl.exe /service
    Примечание. В данном случае мы дали пользователю права на приостановку (Pause/Continue), запуск (Start) и остановку (Stop) службы. Полный список доступных разрешений:
    F : Full Control
    R : Generic Read
    W : Generic Write
    X : Generic eXecute
    L : Read controL
    Q : Query Service Configuration
    S : Query Service Status
    E : Enumerate Dependent Services
    C : Service Change Configuration
    T : Start Service
    O : Stop Service
    P : Pause/Continue Service
    I : Interrogate Service
    U : Service User-Defined Control Commands
    Если нужно предоставить права на удаленной машине, синтаксис будет такой:
    subinacl /SERVICE \\msk-buh01\spooler /grant=contoso\tuser=F
  4. Осталось войти в данную систему под учеткой пользователя и попробовать перезапустить службу командами:
    net stop spooler
    net start spooler

Если вы все сделали верно, служба должна остановиться и запуститься заново.

Шаблон безопасности (Security Template)

Более наглядный (но и требующий большего количества действий) графический способ управления правами на службы – с помощью шаблонов безопасности. Для реализации, откройте консоль mmc.exe и добавьте оснастку Security Templates.

mmc оснастка Security TemplatesСоздадим новый шаблон (New Template).

Новый шаблон безопасностиЗадайте имя нового шаблона и перейдите в раздел System Services. В списке служб выберите свою службу Print Spooler и откройте ее свойства.

Установите тип запуска (Automatic) и нажмите кнопку Edit Security.

Свойства службыС помощью кнопки Add добавьте учетную запись пользователя или группы, которым нужно предоставить права. В нашем случае, нам достаточно права Start, Stop and pause.

Разрешения службыСохраните шаблон (Save).

Примечание. Содержимое шаблона безопасности сохраняется в inf файле в каталоге C:\Users\username\Documents\Security\Templates

Если открыть этот файл, можно увидеть, что данные о правах доступа сохраняются в уже ранее упомянутом SDDL формате. Полученная таким образом строка может быть использована в качестве аргументы команды sc.exe.

[Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[Service General Setting]
"Spooler",2,"D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;RPWPDTRC;;;S-1-5-21-3243688314-1354026805-3292651841-1127)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

inf файл шаблона безопасностиОсталось с помощью оснастки Security Configuration and Analysis создать новую базу данных (Open Database) и импортировать наш шаблон безопасности из файла Spooler User Rights.inf.

Импорт шаблона безопасностиПрименим шаблон, вызвав из контекстного меню команду Configure Computer Now.

Configure Computer NowПод пользователем проверьте, что у него появились права на управление службой Spoller.

Управление правами служб через групповые политики

В том случае, если нужно раздать пользователям права запуска/остановки сервиса на множестве компьютеров, проще всего воспользоваться возможностями групповых политик (GPO).

  1. Создайте новую или отредактируйте существующую GPO, назначьте ее на нужный контейнер с компьютерами в Active Directory. Перейдите в раздел политик Computer configuration -> Windows Settings -> Security Settings -> System Services.Групповая политика управления службами
  2. Найдите службу Spooler и аналогично ранее рассмотренной методике предоставьте права пользователю. Сохраните изменения.
    Примечание. Ранее мы показывали, как с помощью аналогичной GPO можно скрыть от всех пользователей системы любую службу Windows.
  3. Осталось дождаться применения политик на клиентских компьютерах и проверить применение настроек прав службы.

Итак, мы разобрали несколько способов управления разрешениями на службы Windows, позволяющих предоставить произвольному пользователю любые права на службы системы.

 

Добавить комментарий


Защитный код
Обновить