Windows располагает хорошими средствами автоматизации рутинных действий что называется «из коробки». Начиная с Windows Vista, пользователям десктопных и серверных систем доступны функции входа в качестве службы и в качестве пакетного задания.
Что это значит? Если учетная запись пользователя имеет право входить в систему в качестве службы, то это позволяет запустить от его имени какой-либо процесс как службу. Соответственно, такой процесс наделяется всеми свойствами службы (например, автозапуском).
Что касается пакетных заданий, то данная система обеспечивает функционирование Планировщика заданий без необходимости для пользователя лично заходить в компьютер под своей учетной записью.
Для того, чтобы обе функции стали доступны, необходимо открыть Редактор локальных групповых политик командой gpedit.msc.
Далее откройте раздел Конфигурация компьютера → Конфигурация Windows → Параметры безопасности → Назначение прав пользователя.
Обе групповые политики редактируются одинаковым образом. Достаточно нажать кнопку Добавить пользователя или группу и выбрать соответствующего пользователя (соответствующую группу).
↑
Для безопасного запуска сторонних сервисов в Windows можно использовать учетную запись пользователя без прав локального администратора. Для этого нужно изменить настройки локальной политики безопасности и предоставить пользователю права входа в качестве службы.
По умолчанию службы Windows запускаются в контексте привилегированных учетных записей (System, Local Service или Network Service). Чтобы ограничить права службы, можно настроить ее запуск из-под обычного пользователя.
Чтобы изменить учетную запись, из-под которой запускается служба из консоли управления службами (services.msc
).
- Запустите консоли, найдите нужную службу и откройте ее свойства
- Перейдите на вкладку Log On. По умолчанию служба запускается от имени Local System.
- Чтобы запустить службу от пользователя, включите опцию This account и укажите учетную запись и ее пароль.
- Когда вы сохраните настройки, появится сообщение:
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, запустить службу от его имени не получится.
Данная политика разрешает определенным учетным записям запускать от своего имени какой-то процесс, как службу 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
“Log on as a service” is a security policy that allows certain users to run Windows network services whether they are logged on locally or not. This policy is used when you need to run a specific application or service on a computer in the background, without user interaction and without granting local administrator privileges.
In this post, we’ll cover how to configure the ‘Log on as service’ policy using a GPO or from the PowerShell command line, and how to configure the service to run under a specific user account.
How to Configure “Log on as a service” Rights Assignments via Group Policy
You can configure the “Log on as a service” rights assignment via the local or domain group policy. Use the Local Security Policy (secpol.msc) to configure the policy on a specific computer. Or, run the Group Policy Management console (gpmc.msc), create and configure new GPO to configure Logon as service policy for multiple domain computers.
- Navigate to Security Settings → Local Policies → User Rights Assignments and double-click the “Log on as a service” policy.
- By default, only the NT SERVICE\ALL SERVICES group is specified here. Click Add User or Group.
- Specify the groups or users (domain or local) to grant “Log on as a service” rights and click OK. You can add local or domain users and groups.
- Click OK to save the list.
- Wait for the Group Policy update or run gpupdate /force to force the update immediately.
Managing “Log on as a service” Permission with PowerShell
You can change the settings for the ‘Log on as a service’ policy from the PowerShell command line.
The easiest way to grant ‘Log on as a service’ permissions is to use the NTRights.exe command line tool, which is part of the Windows Server 2003 Resource Toolkit. Unfortunately, the direct download link for this package has been removed from the Microsoft site, but you can download it from WebArchive.
Install the Resource Toolkit on the computer and run a command prompt as an Administrator.
Navigate to the directory:
cd "C:\Program Files (x86)\Windows Resource Kits\Tools"
To grant the user CONTOSO\j.brion Log on service privileges, run the command:
ntrights +r SeServiceLogonRight -u CONTOSO\j.brion
Check that the user has been assigned rights in the Local Security Policy snap-in.
To remove a user from a policy, run:
ntrights -r SeServiceLogonRight -u CONTOSO\j.brion
To manage permissions, you can also use the built-in secedit.exe tool. We have created three PowerShell script wrappers for the secedit.exe tool that you can download from the following links
- [PS-Manage-Log-On-As-A-Service] — The public GitHub repository.
- [Get-ServiceLogonRight.ps1] — A script to retrieve the local machine’s current “Log on as a service” rights.
- [Add-ServiceLogonRight.ps1] — A script to add a user and group to the “Log on as a service” policy.
- [Remove-ServiceLogonRight.ps1] — A script to remove a user or group from the current “Log on as a service” policy.
List the current accounts in the “Log on as a service” policy:
.\Get-ServiceLogonRight.ps1
Add a user or group to the “Log on as a service” policy:
.\Add-ServiceLogonRight.ps1 -UserOrGroup <DOMAIN\group>
Remove a user from a policy:
# Remove a local user .\Remove-ServiceLogonRight.ps1 -UserOrGroup localadmin02
How to configure a Windows service to run as a specific user
Now you can reconfigure your Windows service to run in a user context.
- Open the service management console (services.msc).
- Find the service and open its properties.
- Got to the Log on tab > select This account.
- Select account name and type it password.
- Try starting the service to check if it works correctly in the user’s context.
An error may occur when starting the service:
Could not start the <service name> service on Local Computer.
Error 1069: The service did not start due to a logon failure.
This indicates that you have entered a wrong username or password.
Note that for the user account used to start the service, we recommend you to enable the Password never expires checkbox in the account properties.
Cyril Kardashevsky
I enjoy technology and developing websites. Since 2012 I’m running a few of my own websites, and share useful content on gadgets, PC administration and website promotion.
Учетная запись для входа службы
Параметры Учетная запись для входа службы агента и Учетная запись входа для службы сервера управления позволяют изменить учетную запись, с которой запускается агент или служба управления (соответственно).
Можно выбрать один из следующих параметров:
-
Использовать учетные записи пользователя услуги (по умолчанию для службы агента)
Учетные записи пользователя услуги — это системные учетные записи Windows, которые используются для запуска служб. Преимущество этого параметра состоит в том, что политики безопасности домена не влияют на права пользователей этих учетных записей. По умолчанию агент запускается в учетной записи Локальная система.
-
Создать учетную запись (по умолчанию для службы сервера управления и службы узла хранения)
Учетные записи будут иметь имена Acronis Agent User, AMS User и ASN User для агента, сервера управления и служб узла хранения соответственно.
-
Использовать следующую учетную запись
При установке продукта на контроллер домена программа установки предложит указать существующие учетные записи (или ту же учетную запись) для каждой службы. В целях безопасности программа установки не может автоматически создавать учетные записи на контроллере домена.
Учетной записи пользователя, указанной при выполнении программы установки в контроллере домена, должно быть предоставлено право Вход в качестве службы. Чтобы на данной машине можно было создать папку профиля этой учетной записи, последняя уже должна использоваться в контроллере домена.
Дополнительную информацию об установке агента на контроллере домена только для чтения см. в этой статье базы знаний.
Кроме того, настройка Использовать следующую учетную запись позволяет использовать проверку подлинности Windows для Microsoft SQL Server в том случае, если сервер управления настроен с базой данных SQL.
При выборе параметра Создать учетную запись или Использовать следующую учетную запись убедитесь, что политики безопасности домена не повлияют на права соответствующих учетных записей. Если права пользователя не были заданы для учетной записи при установке, связанный компонент может работать неправильно или вообще не работать.
Права, которые требуются пользователю для учетной записи для входа службы
Агент защиты запускается как Managed Machine Service (MMS) на машине Windows. Для надлежащей работы агента учетная запись, с которой запускается агент, должна иметь следующие права:
- Пользователь MMS должен входить в состав групп Операторы резервного копирования и Администраторы. На контроллере домена пользователь должен входить в состав группы Администраторы домена.
- Пользователю MMS должно быть предоставлено разрешение Полный доступ в отношении папки
%PROGRAMDATA%\Acronis
(в Windows XP и Server 2003,%ALLUSERSPROFILE%\Application Data\Acronis
) и ее подпапок. - Пользователю MMS должно быть предоставлено разрешение Полный доступ в отношении определенных разделов реестра в следующем разделе:
HKEY_LOCAL_MACHINE\SOFTWARE\Acronis
. -
Пользователю MMS должны быть назначены следующие права в Windows:
- Вход в качестве службы
- Настройка квот памяти для процесса
- Замена маркера уровня процесса
- Изменение параметров среды оборудования
Пользователь ASN должен иметь права локального администратора на машине с установленным узлом хранения Acronis.
Порядок назначения прав пользователя в ОС Windows
В данной процедуре в качестве примера используется право пользователя Вход в качестве службы. Действия для других прав пользователя будут аналогичны.
- Войдите на компьютер как администратор.
- На панели управления откройте раздел Администрирование. Как вариант, на клавиатуре нажмите сочетание клавиш Win+R и введите control admintools и нажмите клавишу Enter.
- Откройте раздел Локальная политика безопасности.
- Разверните пункт Локальные политики и щелкните пункт Назначение прав пользователя.
- На правой панели щелкните правой кнопкой мыши Вход в качестве службы и выберите пункт Свойства.
- Щелкните Добавление пользователя или группы…, чтобы добавить нового пользователя.
- В окне Выбрать пользователей или группы выберите пользователя для добавления и нажмите кнопку ОК.
- Чтобы сохранить изменения, в окне Вход в качестве службы нажмите кнопку ОК.
Пользователь, который добавляется в правило Вход в качестве службы, не должен быть указан в политике Отказать во входе в качестве службы в разделе Локальная политика безопасности.
Не рекомендуется вручную менять учетные записи входа после окончания установки.
По умолчанию обычные пользователи (без прав администратора) не могут управлять системными службами 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
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)"
Если вы сформировали корректный DACL, команда вернет:
[SC] SetServiceObjectSecurity SUCCESS
Если вы указали несуществующий SID или ошиблись в синтаксисе SDDL, появится ошибка:
No mapping between account names and security IDs was done.
Проверьте, что пользователь теперь может остановить и запустить службу:
net stop spooler && net start spooler
Чтобы вывести текущие права на службу в более удобном виде, воспользуйтесь утилитой 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
В данном случае мы дали пользователю права на приостановку (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 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
Process Explorer: Изменить права разрешений на службу
Для управления правами на службу из графического интерфейса можно использовать утилиту Process Explorer (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer(. Запустите Process Explorer с правами администратора и найдите в списке процессов процесс нужной вам службы. В нашем примере это spoolsv.exe (диспетчер очереди печати — C:\Windows\System32\spoolsv.exe). Откройте свойства процесса и перейдите на вкладку Services.
Нажмите на кнопку Permissions. В окне появится текущий ACL службы. По умолчанию для локальных пользователей доступен только просмотр службы (Read).
Добавьте пользователя или группу, которой нужно предоставить права на сервис. Теперь нужно выбрать назначить уровень полномочий. По умолчанию доступны только Full Control, Write и Read).
Чтобы разрешить запуск/остановку службы, можно предоставить право Write. Однако это позволит пользователю изменить настройки службы или удалить ее.
Чтобы разрешить только запуск/остановку службы, нажмите кнопку Advanced -> выберите вашего пользователя и нажмите Edit -> щелкните Show Advanced permissions. Оставьте в списке прав только Start, Stop, Read, Query Status и User-Defined Control.
Сохраните изменения.
Теперь выбранный пользователь может перезапускать службу.
Управление правами на службы через групповые политики
Если нужно раздать пользователям права запуска/остановку службы сразу на всех северах или компьютерах домена, проще всего воспользоваться возможностями групповых политик (GPO).
- Создайте новую или отредактируйте существующую GPO, назначьте ее на нужный контейнер с компьютерами в Active Directory. Перейдите в раздел политик Computer configuration -> Windows Settings -> Security Settings -> System Services;
- Найдите службу Print Spooler и откройте ее свойства;
- Включите опцию Define this policy settings, включите автозапуск для службы и нажмите Edit Security;
- В открывшемся окне добавьте пользователя или доменную группу, которым нужно предоставить права на службу. Предоставьте разрешение Start, stop and pause и Read;
- Осталось дождаться обновления политик на клиентских компьютерах и проверить что ваш пользователь теперь может перезапускать службу.
Где хранятся разрешения службы Windows?
Настройки безопасности для все служб, для которых вы изменили разрешения по-умолчанию хранятся в собственной ветке реестра HKLM\System\CurrentControlSet\Services\<servicename>\Security в параметре Security типа REG_BINARY.
Это означает, что одним из способов установки аналогичных разрешений на других компьютерах может быть экспорт/импорт данного параметра реестра (в том числе через GPO).
Итак, мы разобрали несколько способов управления правами на службы Windows, позволяющих предоставить произвольному пользователю любые права на системные службы. Если нужно, чтобы пользователь могу перезапускать службу удаленно (без предоставления права локального входа в систему), нужно разрешить пользователю удаленно опрашивать Service Control Manager.