Разрешение на запуск системных служб windows 2008

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

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

Предположим, нам нужно предоставить доменной учетной записи contosotuser права на перезапуск службы печати (Print Spooler) с системным именем Spooler. При попытке перезапустить службу под пользователей появляется ошибка:
System error 5 has occurred. Access is denied.

net stop - system error 5 - нет прав на перезапуск службы

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

Содержание:

  • Управление правами на службы с помощью встроенной утилиты SC.exe (Service controller)
  • Предоставление прав на перезапуск службы с помощью SubInACL
  • Process Explorer: Установка разрешений на службу
  • Назначаем разрешения на службу с помощью PowerShell
  • Используем шаблоны безопасности (Security Templates) для управления разрешениями служб
  • Управление правами служб через групповые политики

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

Управление правами на службы с помощью встроенной утилиты SC.exe (Service controller)

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

Главная, проблема – зубодробительный синтаксис формата предоставления прав на сервис (используется формат SDDL — Security Description Definition Language).

Получить текущие разрешения на службу в виде SDDL строки можно так:

sc.exe sdshow Spooler

sc.exe sdshow - узнать текущие права на службу

D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA) (A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Что значат все эти символы?

S: — System Access Control List (SACL)
D: — Discretionary ACL (DACL)

Первая буква после скобок означает: разрешить (A, Allow) или запретить (D, Deny).

Следующая пачка символов – назначаемые права.

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 (приостановка, продолжение службы)

Последние 2 буквы — объекты (группа пользователей или 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

Можно вместо предустановленной группы явно указать пользователя или группу по SID. Получить SID пользователя для текущего пользователя можно с помощью команды:

whoami /user

или для любого пользователя домена с помощью PowerShell комаднлета Get-ADUser:

Get-ADUser -Identity 'iipeshkov' | select SID

SID доменной группы можно получить с помощью командлета Get-ADGroup:

Get-ADGroup -Filter {Name -like "msk-helpdesk*"} | Select SID

Чтобы назначить SDDL строку с правами на определённую службу, используется команда sc sdset. К примеру, права пользователю на службу spooler могут быть предоставлены следующей командой:
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)"

Предоставление прав на перезапуск службы с помощью SubInACL

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

  1. Скачайте subibacl,msi со страницы (https://www.microsoft.com/en-us/download/details.aspx?id=23510) и установите ее на целевой системе;SubInACL - управление правами служб
  2. В командной строке с правами администратора перейдите в каталог с утилитой:
    cd “C:Program Files (x86)Windows Resource KitsTools
  3. Выполните команду:
    subinacl.exe /service Spooler /grant=contosotuser=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:
    subinacl /SERVICE \msk-buh01spooler /grant=contosotuser=F

  4. Осталось войти в данную систему под учетной записью пользователя и попробовать перезапустить службу командами:
    net stop spooler
    net start spooler


    или
    sc stop spooler && sc start spooler

    перезапуск службы коммандой sc

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

Чтобы лишить пользователя назначенных прав на службу в subinacl.exe используется параметр
/revoke
, например:

subinacl.exe /service Spooler /revoke=contosotuser

Process Explorer: Установка разрешений на службу

Достаточно просто изменить разрешения на службу с помощью еще одной утилиты Sysinternals — Process Explorer. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:WindowsSystem32spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

process explorer свойства службы

Нажмите на кнопку Permissions и в открывшемся окне добавьте пользователя или группу, которой нужно предоставить права на сервис и выберите уровень полномочий (Full Control/Write/Read).

procexp - выдать права на службу

Назначаем разрешения на службу с помощью PowerShell

В галерее TechNet имеется отдельный неофициальный модуль PowerShell для управления разрешениями на разные объекты Windows — PowerShellAccessControl Module (скачать его можно здесь). Этот модуль позволяет управлять правами на службы. Импортируйте модуль в свою PS сессию:

Import-Module PowerShellAccessControl

Получить эффективные разрешения на конкретную службу из PowerShell можно так:

Get-Service spooler | Get-EffectiveAccess -Principal corptuser

Чтобы предоставить обычному пользователю права на запуск и остановку службы, выполните:

Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corptuser

Используем шаблоны безопасности (Security Templates) для управления разрешениями служб

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

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

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

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

Свойства службы

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

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

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

Если открыть этот файл, можно увидеть, что данные о правах доступа сохраняются в уже упомянутом ранее 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

Теперь можно под пользователем проверить, что у него появились права на управление службой Print Spooler.

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

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

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

Где хранятся разрешения служб Windows?

Настройки безопасности для все служб, для которых вы изменили разрешения по-умолчанию хранятся в собственной ветке реестра HKLMSystemCurrentControlSetServices<servicename>Security в параметре Security типа REG_BINARY.

разрешения на службу хранятся в реестре

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

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

  • Remove From My Forums
  • Question

  •  I’m trying to give a domain user rights to start and stop services on Windows 2008 server but I don’t want to give the user local admin rights.  I’ve used «subinacl» tool but no success.  I’m using «sc» command to execute the stop, start, and query command from a remote computer and I can do this if I give the user local admin rights on the server where the service resides.  No other built in group works other than the local admin group. 

    • Edited by

      Wednesday, February 4, 2009 6:21 PM

Answers

  • hi there,

    i would like to know why do you want to give domain users the permissions to start and stop the service.

    by default all the services are managed / symbolic link is provided in registry .Default which will have the control which user to start and stop the service.

    but as an enterprise architect i would not prefer you to fiddle around the service, unless they are custom service / service which you have written.


    sainath
    Windows Driver Development

    • Marked as answer by
      Sainath IRP_MJ_CREATEModerator
      Friday, April 24, 2009 3:55 AM

  • Remove From My Forums
  • Question

  •  I’m trying to give a domain user rights to start and stop services on Windows 2008 server but I don’t want to give the user local admin rights.  I’ve used «subinacl» tool but no success.  I’m using «sc» command to execute the stop, start, and query command from a remote computer and I can do this if I give the user local admin rights on the server where the service resides.  No other built in group works other than the local admin group. 

    • Edited by

      Wednesday, February 4, 2009 6:21 PM

Answers

  • hi there,

    i would like to know why do you want to give domain users the permissions to start and stop the service.

    by default all the services are managed / symbolic link is provided in registry .Default which will have the control which user to start and stop the service.

    but as an enterprise architect i would not prefer you to fiddle around the service, unless they are custom service / service which you have written.


    sainath
    Windows Driver Development

    • Marked as answer by
      Sainath IRP_MJ_CREATEModerator
      Friday, April 24, 2009 3:55 AM

Настройка запуска службы в Windows Server 2008

Давайте сегодня разбирём способ настройки запуска службы в Windows Server 2008.

Службы Windows Server 2008, как и всех систем семейства Windows, запускаются автоматически или вручную. Также их можно выключить.

Настройка запуска службы производится следующим образом:

1. В окне Диспетчер сервера (Server Manager) разверните узел Конфигурация (Configuration).

2. Выделите узел Службы (Services), щелкните правой кнопкой службу, которую хотите настроить, и выберите команду Свойства (Properties).

3. На вкладке Общие (General) выберите в раскрывающемся списке Тип запуска (Startup Туре) один из следующих вариантов.

Авто (Automatic) Служба будет запускаться при загрузке.

• Автоматически (отложенный запуск) (Automatic (Delayed Start)) Служба запускается автоматически, но только после того как стартуют все обычные автоматические службы.

• Вручную (Manual) Служба запускается вручную.

• Отключена (Disabled) Служба не работает.

4. Щелкните ОК.

Вчера с женой учились делать клизму ребёнку, не самостоятельно, а у врача. Жалко очень пацана было, всё таки не приятные ощущения, но нужно! Клизма ребенку помогает промыть организм, от «ненужных» вещей. И особенно помогает при отравлении, когда малютка съел что то не то. А родителям, я считаю, обязательно нужно уметь делать клизму самим.

7 / 7 / 6

Регистрация: 02.04.2012

Сообщений: 321

1

Server 2016

Как включить разрешение на запуск системных служб ?

23.03.2017, 16:50. Показов 92038. Ответов 5


Добрый день!

При запуски мастера установки клиент-серверной 1С, можно выбрать пользователя: DefaultAccount либо создать нового пользователя, к примеру я создал пользователя: USR1CV8.

Во время установки клиент-серверной 1С, вылетает ошибка: Ошибка при запуске службы …убедитесь, что у вас имеются разрешения на запуск системных служб.

Подскажите пожалуйста как в windows server 2016 предоставить пользователю USR1CV8 права на запуск служебных служб.

В системе авторизован под пользователем User — тип учётной записи — администратор.
Среди учётных записей есть пользователь с именем Администратор, но как зайти в систему через него, я не знаю.

Напечатайте пожалуйста две инструкции:
1. Как в microsoft windows server авторизоваться под пользователем — Администратор?
2. Как разрешить запуск системных служб пользователям User и USR1CV8?

С уважением

Миниатюры

Как включить разрешение на запуск системных служб ?
 

Как включить разрешение на запуск системных служб ?
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт по компьютерным сетям

490 / 89 / 18

Регистрация: 01.12.2009

Сообщений: 370

Записей в блоге: 1

24.03.2017, 10:53

2

MrRuslanBB,
1. Сменить пользователя, как и в обычных виндах — выход из системы, другой пользователь, ввести учетные данные. Если вы не знаете пароля администратора, обратитесь к тому, кто устанавливал систему, т.к. установка пароля администратора запрашивается на этапе установки WinServer.
1.а. Возможен сценарий, когда сервер — контроллер домена. В этом случае на нем отключены локальные учетные записи и зайти можно только используя доменные учетки.

2. Я таки думаю, что сообщение о запрете на запуск системных служб относится к пользователю, под которым вы авторизовались на сервере, т.е. пользователю User. Чтобы разрешить ему что-то подобное, вам все равно понадобятся права администратора.



2



7 / 7 / 6

Регистрация: 02.04.2012

Сообщений: 321

25.03.2017, 15:19

 [ТС]

3

Помогла инструкция напечатанная ниже, спасибо Dethmontt

Необходимо пропустить ошибку, далее, зайти в управление компьютером, открыть список служб, найти там Агента сервера 1С:Предприятие — зайти в свойства службы и указать под кем запускаться — Запустить и радоваться =)))



0



0 / 0 / 0

Регистрация: 17.09.2014

Сообщений: 6

14.10.2021, 01:18

4

MrRuslanBB, для того, чтобы был доступ к службе от имени, создаваемого установщиком, пользователя USR1CV8, можно добавить его в группу администраторов, поскольку он после создания будет находится в группе пользователей. И поэтому даже, если дать ему полный доступ к данному сервису, скажем, через консольную команду sc, то запустить службу система вам все равно не даст (поскольку будет отсутствовать доступ на запуск дочерних служб). Либо же придется выдавать данному пользователю соответствующие права для каждой дочерней службы.



0



Модератор

Эксперт по компьютерным сетямЭксперт HardwareЭксперт Windows

6871 / 3818 / 477

Регистрация: 13.03.2013

Сообщений: 14,059

Записей в блоге: 9

14.10.2021, 06:24

5

Цитата
Сообщение от MrRuslanBB
Посмотреть сообщение

Необходимо пропустить ошибку

Неверный подход, в Вашем случае учетная запись «USR1CV8» либо не была создана, либо у нее отсутстовали права на запуск служб.
В первом случае необходимо либо создать учетку, либо выставить запуск службы от имени системной учетной записи (NT AUTHORITYSYSTEM).
Во втором случае необходимо открыть «gpedit.msc=>Конфигурация компьютера=>Конфигурация Windows=>Параметры безопасности=>Назначение прав пользователя» и добавить учетку «USR1CV8» в пункты «»Вход в качестве пакетного задания» и «Вход в качестве службы».



0



0 / 0 / 0

Регистрация: 17.09.2014

Сообщений: 6

14.10.2021, 15:01

6

Maks, учетка создается и остается в системе даже, если отменить установку, разве только её не удалить вручную. Просто у неё нет соответствующих прав для работы со службой и дочерних, от которой она зависит. Это косяк тех, кто пилил инсталятор. Она включена в группу «Пользователи», а они не обладают данными привилегиями. Можно, конечно, и под системной учеткой запускать, работать будет. Но все же целесообразнее для такой цели выделить отдельного пользователя.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

14.10.2021, 15:01

6

Буквально сегодня понадобилось дать человеку возможность перезапускать тестовый вебсервер под виндой.
Права админа давать естественно давать не хочется.
«Мощный» юзер не подходит.

букв много

и тут на помощь приходит technet, который расcказывает про sc.

В данном случае нас интересуют 2 команды:
sc sdshow — показывает права
sc sdset — устанавливает права

Для начала узнаем, какие права у нашего сервиса уже есть:
C:Usersadministrator>sc sdshow service_name

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Без изысков.

Как видно, есть 2 интересных префикса:
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 пользователя?
есть не один способ :)

но, самый простой и удобный (на мой взгляд), написать маленький скриптик на vb:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")

Set objAccount = objWMIService.Get _
("Win32_UserAccount.Name='username',Domain='domain'")
Wscript.Echo objAccount.SID

Заменяем имя пользователя и домен по своему вкусу, сохраняем файл с расширением .vbs и запускаем.
Появляется алерт с SID.

Копируем в блокнот(или в любое другое место)
Можно скрипт запустить в консоли, сэкономим время :)

И так. Узнали SID.
Вставляем в ключ:
(A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)

Теперь подготавливаем команду целиком:
sc sdset D:(A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Наш ключ вставляем в любое место, но важно чтобы он был перед префиксом S.
Важно не ошибиться, иначе можем потерять доступ к сервису :)
Запускаем.

проверяем:
sc \server stop «service_name»

Надеюсь, основную мысль донес.
Так же жду критики, тк подозреваю что могут быть способы проще.

UPD можно, кстате, использовать группы.
для того чтобы узнать SID группы — вместо username, напишите имя группы.

Понравилась статья? Поделить с друзьями:
  • Разная раскладка в разных окнах windows 10
  • Разрешение на доступ отсутствует обратитесь к сетевому администратору windows 10
  • Размытый экран монитора что делать windows 10 при входе
  • Размытость текста в приложениях windows 10
  • Размытость на экране монитора windows 10