Windows права на запуск службы

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

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

System error 5 has occurred. Access is denied.

В Windows есть несколько способов предоставления пользователю прав на службу:

Содержание:

  • Управление правами на службы из командой строки
  • Назначаем разрешения на службу с помощью PowerShell
  • Process Explorer: Изменить права разрешений на службу
  • Управление правами на службы через групповые политики

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

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

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

  • sc show
    — вывести текущие права службы:
  • sc sdset
    – изменить права на службу

Основной недостаток этого метода – очень сложный формата предоставления прав на сервис (используется формат 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

В DACL можно использовать предопределенные группы, или указать произвольного пользователя или группу по 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. В нашем примере нужно добавить в ACL службы следующую строку:

(A;;RPWPCR;;; S-1-5-21-2927053466-1818515551-2824591131-1110)
  • A – Allow
  • RPWPCR RP (SERVICE_START) + WP (SERVICE_STOP) + CR ( SERVICE_USER_DEFINED_CONTROL)
  • SID – SID пользователя или группы

Добавьте вашу ACL в конец строки, которая вернула sdshow. Чтобы применить новые права доступа на службу, воспользуйтесь командой sc sdset:

sc sdset Spooler "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)"

sc-sdset изменить права на службу в windows

Если вы сформировали корректный DACL, команда вернет:

[SC] SetServiceObjectSecurity SUCCESS

Если вы указали несуществующий SID или ошиблись в синтаксисе SDDL, появится ошибка:

No mapping between account names and security IDs was done.

Проверьте, что пользователь теперь может остановить и запустить службу:

net stop spooler && net start spooler

перезапустить службу net stop start

Чтобы вывести текущие права на службу в более удобном виде, воспользуйтесь утилитой psservice.exe (https://learn.microsoft.com/en-us/sysinternals/downloads/psservice)
psservice.exe security spooler

Теперь вы видите права на службу в более удобном виде.

SERVICE_NAME: Spooler
DISPLAY_NAME: Print Spooler
        ACCOUNT: LocalSystem
        SECURITY:
        [ALLOW] NT AUTHORITY\Authenticated Users
                Query status
                Query Config
                Interrogate
                Enumerate Dependents
                User-Defined Control
                Read Permissions
        [ALLOW] NT AUTHORITY\SYSTEM
                Query status
                Query Config
                Interrogate
                Enumerate Dependents
                Pause/Resume
                Start
                Stop
                User-Defined Control
                Read Permissions
        [ALLOW] RESOURCE\a.ivanov
                Change Config
                Start
                Stop
                User-Defined Control
                Read Permissions
        [ALLOW] BUILTIN\Administrators
                All

В предыдущих версиях Windows для управления правами на службы можно было воспользоваться консольной утилитой SubInACL (входила в Windows Resource Kit).

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

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.exe используется параметр /revoke. Например:

subinacl.exe /service Spooler /revoke=contoso\tuser

Однако сейчас SubInACL недоступна для загрузки на сайте Microsoft, поэтому мы не будем рекомендовать использовать ее.

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

Вы можете изменить разрешения службы с помощью PowerShell. Встроенный командлет управления службами Set-Service позволяет по аналогии с sc sdset задать права на слуюбу с помощью формата SDDL:

$SDDL = "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)"
Set-Service -Name Spooler -SecurityDescriptorSddl $SDDL

powershell Set-Service дать права на службу

Данный командлет доступен только после установки (обновления) PowerShell Core. В Windows PowerShell 5.1 эта команда вернет ошибку:

Set-Service : A parameter cannot be found that matches parameter name 'SecurityDescriptorSddl'.

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

Также вы можете использовать модуль Carbon из PowerShell Gallery для управления разрешениями на разные объекты Windows. Он в том числе позволяет управлять правами на службы. Установите модуль:

Install-Module -Name 'Carbon'Import-Module 'Carbon'

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

Grant-CServicePermission -Identity winitpro\kbuldogov -Name spooler -QueryStatus -EnumerateDependents -Start -Stop

Чтобы вывести текущий ACL службы:

Get-ServicePermission -Name spooler|fl

Grant-CServicePermission команда powershell

Process Explorer: Изменить права разрешений на службу

Для управления правами на службу из графического интерфейса можно использовать утилиту Process Explorer (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer(. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:\Windows\System32\spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

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

Нажмите на кнопку Permissions. В окне появится текущий ACL службы. По умолчанию для локальных пользователей доступен только просмотр службы (Read).

Добавьте пользователя или группу, которой нужно предоставить права на сервис. Теперь нужно выбрать назначить уровень полномочий. По умолчанию доступны только Full Control, Write и Read).

Чтобы разрешить запуск/остановку службы, можно предоставить право Write. Однако это позволит пользователю изменить настройки службы или удалить ее.

Чтобы разрешить только запуск/остановку службы, нажмите кнопку Advanced -> выберите вашего пользователя и нажмите Edit -> щелкните Show Advanced permissions. Оставьте в списке прав только Start, Stop, Read, Query Status и User-Defined Control.

process expolorer настроить права доступа к службе

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

services.msc - разрешить перезапустить службу пользователям

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

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

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

  2. Найдите службу Print Spooler и откройте ее свойства;
  3. Включите опцию Define this policy settings, включите автозапуск для службы и нажмите Edit Security;
  4. В открывшемся окне добавьте пользователя или доменную группу, которым нужно предоставить права на службу. Предоставьте разрешение Start, stop and pause и Read;
    Дать пользователю права на службу Windows через GPO

  5. Осталось дождаться обновления политик на клиентских компьютерах и проверить что ваш пользователь теперь может перезапускать службу.

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

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

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

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

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

Как предоставить обычным пользователям права на запуск/остановку служб Windows?

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

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

System error 5 has occurred. Access is denied.

В Windows есть несколько способов предоставления пользователю прав на службу:

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

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

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

  •  sc show — вывести текущие права службы;
  •  sc sdset — изменить права на службу

Основной недостаток этого метода – очень сложный формата предоставления прав на сервис (используется формат 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

В DACL можно использовать предопределенные группы, или указать произвольного пользователя или группу по 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. В нашем примере нужно добавить в ACL службы следующую строку:

(A;;RPWPCR;;; S-1-5-21-2927053466-1818515551-2824591131-1110)
  • A – Allow
  • RPWPCR – RP (SERVICE_START) + WP (SERVICE_STOP) + CR ( SERVICE_USER_DEFINED_CONTROL)
  • SID – SID пользователя или группы

Добавьте вашу ACL в конец строки, которая вернула sdshow. Чтобы применить новые права доступа на службу, воспользуйтесь командой sc sdset:

sc sdset Spooler «D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)»

sc-sdset изменить права на службу в windows

Если вы сформировали корректный DACL, команда вернет:

[SC] SetServiceObjectSecurity SUCCESS

Если вы указали несуществующий SID или ошиблись в синтаксисе SDDL, появится ошибка:

No mapping between account names and security IDs was done.

Проверьте, что пользователь теперь может остановить и запустить службу:

net stop spooler && net start spooler

перезапустить службу net stop start


Чтобы вывести текущие права на службу в более удобном виде, воспользуйтесь утилитой psservice.exe (https://learn.microsoft.com/en-us/sysinternals/downloads/psservice)
psservice.exe security spooler

Теперь вы видите права на службу в более удобном виде.

SERVICE_NAME: Spooler
DISPLAY_NAME: Print Spooler
        ACCOUNT: LocalSystem
        SECURITY:
        [ALLOW] NT AUTHORITY\Authenticated Users
                Query status
                Query Config
                Interrogate
                Enumerate Dependents
                User-Defined Control
                Read Permissions
        [ALLOW] NT AUTHORITY\SYSTEM
                Query status
                Query Config
                Interrogate
                Enumerate Dependents
                Pause/Resume
                Start
                Stop
                User-Defined Control
                Read Permissions
        [ALLOW] RESOURCE\a.ivanov
                Change Config
                Start
                Stop
                User-Defined Control
                Read Permissions
        [ALLOW] BUILTIN\Administrators
                All

В предыдущих версиях Windows для управления правами на службы можно было воспользоваться консольной утилитой SubInACL (входила в Windows Resource Kit).

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

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.exe используется параметр /revoke. Например:

subinacl.exe /service Spooler /revoke=contoso\tuser

Однако сейчас SubInACL недоступна для загрузки на сайте Microsoft, поэтому мы не будем рекомендовать использовать ее.

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

Вы можете изменить разрешения службы с помощью PowerShell. Встроенный командлет управления службами Set-Service позволяет по аналогии с sc sdset задать права на слуюбу с помощью формата SDDL:

$SDDL = «D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2927053466-1818515551-2824591131-1110)»
Set-Service -Name Spooler -SecurityDescriptorSddl $SDDL

powershell Set-Service дать права на службу

Данный командлет доступен только после установки (обновления) PowerShell Core. В Windows PowerShell 5.1 эта команда вернет ошибку:

Set-Service : A parameter cannot be found that matches parameter name 'SecurityDescriptorSddl'.

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

Также вы можете использовать модуль Carbon из PowerShell Gallery для управления разрешениями на разные объекты Windows. Он в том числе позволяет управлять правами на службы. Установите модуль:

Install-Module -Name ‘Carbon’Import-Module ‘Carbon’

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

Grant-CServicePermission -Identity itoservice\kbuldogov -Name spooler -QueryStatus -EnumerateDependents -Start -Stop

Чтобы вывести текущий ACL службы:

Get-ServicePermission -Name spooler|fl

Grant-CServicePermission команда powershell

Process Explorer: Изменить права разрешений на службу

Для управления правами на службу из графического интерфейса можно использовать утилиту Process Explorer (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer(. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:\Windows\System32\spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.

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

Нажмите на кнопку Permissions. В окне появится текущий ACL службы. По умолчанию для локальных пользователей доступен только просмотр службы (Read).

Добавьте пользователя или группу, которой нужно предоставить права на сервис. Теперь нужно выбрать назначить уровень полномочий. По умолчанию доступны только Full Control, Write и Read.

Чтобы разрешить запуск/остановку службы, можно предоставить право Write. Однако это позволит пользователю изменить настройки службы или удалить ее.

Чтобы разрешить только запуск/остановку службы, нажмите кнопку Advanced -> выберите вашего пользователя и нажмите Edit -> щелкните Show Advanced permissions. Оставьте в списке прав только Start, Stop, Read, Query Status и User-Defined Control.

process expolorer настроить права доступа к службе

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

services.msc - разрешить перезапустить службу пользователям

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

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

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

  2. Найдите службу Print Spooler и откройте ее свойства;
  3. Включите опцию Define this policy settings, включите автозапуск для службы и нажмите Edit Security;
  4. В открывшемся окне добавьте пользователя или доменную группу, которым нужно предоставить права на службу. Предоставьте разрешение Start, stop and pause и Read;
    Дать пользователю права на службу Windows через GPO

  5. Осталось дождаться обновления политик на клиентских компьютерах и проверить что ваш пользователь теперь может перезапускать службу.

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

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

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

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

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

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

По умолчанию службы Windows запускаются в контексте привилегированных учетных записей (System, Local Service или Network Service). Чтобы ограничить права службы, можно настроить ее запуск из-под обычного пользователя.

Чтобы изменить учетную запись, из-под которой запускается служба из консоли управления службами (services.msc).

  1. Запустите консоли, найдите нужную службу и откройте ее свойства
  2. Перейдите на вкладку Log On. По умолчанию служба запускается от имени Local System.
  3. Чтобы запустить службу от пользователя, включите опцию This account и укажите учетную запись и ее пароль.
    Запуск службы от имени пользователя

  4. Когда вы сохраните настройки, появится сообщение:
The account svc_user1 has been granted the Log On As A Service right.

учетной записи даны права входа в качестве службы

Windows сама предоставила права на запуск служб от имени этого пользователя. Чтобы проверить это, откройте редактор локальной GPO (gpedit.msc).

Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment и найдите политику Log on as a service.

Предоставление прав входа в качестве службы

Как вы видите, пользователь был добавлен в эту локальную политику безопасности.

Можно предоставить права запуска служб другим пользователям или группам. Нажмите кнопку Add User or Group и укажите имя пользователя/группы.

Чтобы обновить настройки GPO, выполните команду:

gpupdate /force

Кроме разрешающей политики, есть еще и политика, которая позволяет запретить запускать службы от имени некоторых пользователей или групп. Эта политика находится в этом же разделе GPO и называется Deny log on as a service. Запрещающая политика имеет более высокий приоритет. Поэтому если добавить пользователя одновременно в Deny log on as a service и Logon as a service, запустить службу от его имени не получится.

Политика Deny log on as a service

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

Запуск служб от имени непривилегированных пользователей позволяет повысить безопасность и стабильность Windows. Естественно, нужно минимизировать количество аккаунтов, которым вы предоставляете право Logon as a service.

Для предоставления права Logon as a service из командной строки можно использовать утилиту ntrights.exe (входит в состав Windows Server 2003 Resource Kit). Скачать ее можно по ссылке из WebArchive.

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

ntrights.exe +r SeServiceLogonRight -u RESLAB\svc_user1

Это добавит учетную запись в локальную политику безопасности.

Чтобы убрать права пользователя:

ntrights.exe -r SeServiceLogonRight -u RESLAB\svc_user1

Все способы:

  • Исправляем ошибку «Отказано в доступе» при работе со службами в Windows 10
    • Способ 1: Настройка прав доступа системного раздела
    • Способ 2: Редактирование группы Администраторы
    • Способ 3: Проверка определенной службы
    • Способ 4: Включение привилегий для LOCAL SERVER
    • Способ 5: Проверка системы на вирусы
  • Вопросы и ответы: 35

Часто перед пользователями возникает потребность изменить состояние какой-либо службы в Windows 10. Это может быть связано с решением неполадок или временным отключением работы приложения. Однако не всегда процесс происходит корректно. Иногда на экране появляется уведомление «Отказано в доступе», что означает невозможность внести указанные изменения. Далее мы хотим продемонстрировать все доступные варианты исправления этой ситуации.

Исправляем ошибку «Отказано в доступе» при работе со службами в Windows 10

Ошибка «Отказано в доступе» свидетельствует об ограничениях на права пользователя, которые были выставлены администратором или системой автоматически. В большинстве случаев возникновение подобной ситуации связано с системными сбоями, поэтому приходится перебирать возможные варианты ее решения. Мы предлагаем начать с самого очевидного и эффективного, постепенно переходя к более сложным и редко встречающимся исправлениям.

Способ 1: Настройка прав доступа системного раздела

Как известно, все файлы, связанные с операционной системой, хранятся на системном разделе жесткого диска. Если на него установлены какие-либо правовые ограничения, возможно возникновение различных проблем при попытке взаимодействовать со стандартными файлами, в том числе и службами. Решается эта неполадка следующим образом:

  1. Через «Проводник» перейдите в раздел «Этот компьютер», найдите там локальный системный диск, кликните по нему правой кнопкой мыши и выберите пункт «Свойства».
  2. Переход к свойствам локального диска для решения проблем с доступом к службе в Windows 10

  3. В открывшемся окне переместитесь на вкладку «Безопасность».
  4. Переход в раздел Безопасность локального диска для решения проблем с доступом к службе в Windows 10

  5. Щелкните по кнопке «Изменить», предварительно сняв выбор с какой-либо учетной записи.
  6. Переход к изменению прав учетных записей для локального диска в Windows 10

  7. Нажмите на «Добавить», для создания новой группы или пользователя в списке разрешенных.
  8. Переход к добавлению учетной записи для доступа к локальному диску Windows 10

  9. В поле «Введите имена выбираемых объектов» напишите «Все» и нажмите на «Проверить имена».
  10. Добавление профиля Все для доступа к локальному диску в Windows 10 при проблемах с доступом к службам

  11. Данная надпись должна стать подчеркнутой — это означает, что проверка прошла успешно. После этого просто нажмите на «ОК», чтобы сохранить изменения.
  12. Применение изменений после добавления профиля Все для локального диска в Windows 10

  13. Произойдет автоматический переход на эту же вкладку «Безопасность». Теперь отметьте поле «Все» и установите разрешения для полного доступа. Перед выходом не забудьте применить изменения.
  14. Предоставление доступа для профиля Все после внесения изменений в локальном диске Windows 10

  15. Процесс внесения правок безопасности займет несколько минут. Не закрывайте данное окно, чтобы не прервать операцию.
  16. Ожидание завершения применений изменений доступа к локальному диску в Windows 10

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

Способ 2: Редактирование группы Администраторы

Следующее решение будет связано с изменением локальной группы пользователей под названием Администраторы. Принцип этого способа заключается в добавлении прав на управление локальными и сетевыми службами. Для этого придется от имени администратора выполнить две команды в консоли, с чем справится даже самый начинающий юзер.

  1. Приложение «Командная строка» в обязательном порядке следует запустить от имени администратора. Проще всего это сделать, отыскав консоль через «Пуск» и выбрав там соответствующий пункт.
  2. Запуск командной строки для решения проблем с доступом к службам в Windows 10

  3. В первую очередь введите команду net localgroup Администраторы /add networkservice и нажмите на Enter.
  4. Первая команда для решения проблем с доступом к службам в Windows 10

  5. Вы будете уведомлены о ее выполнении.
  6. Успешное выполнение первой команды для решения проблем с доступом к службам в Windows 10

    Если вместо этого вы получили ошибку «Указанная локальная группа не существует», напишите ее название на английском языке — «Administrators» вместо «Администраторы». То же самое надо сделать и с командой из следующего шага.

  7. Теперь можно ввести вторую команду net localgroup Администраторы /add localservice.
  8. Ввод второй команды для решения проблем с доступом к службам в Windows 10

  9. Закройте консоль после появления строки «Команда выполнена успешно».
  10. Успешное выполнение второй команды для решения проблем с доступом к службам в Windows 10

По завершении данной операции обязательно перезагрузите компьютер, поскольку установленная конфигурация активируется только при создании нового сеанса.

Способ 3: Проверка определенной службы

Этот метод подойдет тем пользователям, кто испытывает проблемы с появлением уведомления «Отказано в доступе» только при работе с конкретными службами. Дело может быть в том, что ограничения установлены непосредственно для самой службы, а это можно проверить только через редактор реестра.

  1. Для начала потребуется определить системное наименование службы. Запустите «Пуск», найдите через поиск приложение «Службы» и запустите его.
  2. Запуск служб для проверки названия параметра в Windows 10

  3. Отыщите строку с необходимым параметром и дважды щелкните по ней, чтобы перейти в свойства.
  4. Переход к свойствам службы для определения ее названия в Windows 10

  5. Ознакомьтесь с содержимым строки «Имя службы».
  6. Определение названия службы в Windows 10 при исправлении проблем с доступом

  7. Запомните его и запустите утилиту «Выполнить» через комбинацию клавиш Win + R. Введите regedit и нажмите на Enter.
  8. Запуск редактора реестра для поиска службы при исправлении проблем с доступом в Windows 10

  9. В редакторе реестра перейдите по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  10. Переход по пути хранения параметров служб в редакторе реестра Windows 10

  11. В конечной папке отыщите каталог с названием нужной службы и щелкните по нему ПКМ.
  12. Выбор проблемной службы через редактор реестра в Windows 10

  13. Через контекстное меню перейдите в «Разрешения».
  14. Переход к разрешениям для службы через редактор реестра в Windows 10

  15. Убедитесь в том, что для групп Администраторы и Пользователи установлен полный разрешающий доступ. Если это не так, измените параметры и сохраните изменения.
  16. Изменение прав доступа для службы через редактор реестра в Windows 10

Теперь вы можете прямо в редакторе реестра изменить состояние параметра или вернуться в приложение «Службы», чтобы проверить, помогли ли произведенные действия избавиться от проблемы.

Способ 4: Включение привилегий для LOCAL SERVER

В Windows 10 имеется учетная запись под названием LOCAL SERVER. Она является системной и отвечает за запуск определенных опций, в том числе и при взаимодействии со службами. Если ни один из предыдущих методов не принес должного результата, можно попытаться установить отдельные права для этой учетной записи, что делается так:

  1. Перейдите в свойства локального диска с операционной системой через контекстное меню, откройте вкладку «Безопасность» и нажмите на «Изменить».
  2. Открытие изменений правил безопасности для локального диска в Windows 10

  3. Потребуется кликнуть на «Добавить», чтобы перейти к поиску профиля.
  4. Переход к добавлению профиля безопасности для локального диска в Windows 10

  5. В появившемся окне переместитесь в раздел «Дополнительно».
  6. Дополнительные параметры добавления профиля для доступа к локальному диску Windows 10

  7. Начните поиск учетных записей.
  8. Запуск поиска профиля для доступа к локальному диску в Windows 10

  9. Из списка выберите необходимую сейчас.
  10. Выбор профиля через поиск для доступа к локальному диску в Windows 10

  11. После предоставьте ей полный доступ для управления системными компонентами и примените изменения.
  12. Предоставление прав доступа для локального диска в Windows 10

Способ 5: Проверка системы на вирусы

Последний метод, рассматриваемый сегодня, предполагает проверку системы на вирусы. Использовать его следует в тех случаях, когда ни один из приведенных выше вариантов не помог справиться с проблемой — тогда есть повод задуматься о действии вредоносных файлов. Вполне возможно, что какой-то вирус попросту блокирует доступ к службам, а сама проблема будет решена только после его удаления и восстановления системных объектов. Более детально об этом читайте в отдельном материале на нашем сайте далее.

Подробнее: Борьба с компьютерными вирусами

Теперь вы знаете как бороться с проблемой «Отказано в доступе» при попытках изменить состояние службы в Виндовс 10. Осталось только поочередно выполнять каждый способ, чтобы в максимально короткие сроки отыскать действенное решение.

Наша группа в TelegramПолезные советы и помощь

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

букв много

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

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

Для начала узнаем, какие права у нашего сервиса уже есть:
C:\Users\administrator>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 & "\root\cimv2")

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, напишите имя группы.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Canon lide 220 драйвер windows 10 x64
  • Как узнать количество видеопамяти на windows 11
  • Отложенный перезапуск windows 10
  • Стоит ли ставить касперского на windows 10
  • Windows 10 видеоредактор встроенный где находится