Ниже - определение прав доступа для службы.
Право доступа | Описание |
---|---|
SERVICE_ALL_ACCESS | Включает в себя STANDARD_RIGHTS_REQUIRED в дополнение ко всем правам доступа в этой таблице. |
SERVICE_CHANGE_CONFIG | Требует вызвать функцию ChangeServiceConfig или ChangeServiceConfig2, чтобы изменить конфигурацию службы. Поскольку это значение дает вызывающему право изменить исполняемый файл, который запустила система, оно должно предоставляться только администраторам. |
SERVICE_ENUMERATE_DEPENDENTS | Требует вызвать функцию EnumDependentServices, чтобы перечислить все службы, зависящие от конкретной службы. |
SERVICE_INTERROGATE | Требует вызвать функцию ControlService, которая просит службу сообщить немедленно о ее состоянии. |
SERVICE_PAUSE_CONTINUE | Требует вызвать функцию ControlService, чтобы сделать паузу или продолжить работу службы. |
SERVICE_QUERY_CONFIG | Требует вызвать функцию QueryServiceConfig и QueryServiceConfig2, чтобы сделать запрос о конфигурации службы. |
SERVICE_QUERY_STATUS | Требует вызвать функцию QueryServiceStatusEx, чтобы спросить диспетчера управления службами о состоянии службы. |
SERVICE_START | Требует вызвать функцию StartService, чтобы запустить службу. |
SERVICE_STOP | Требует вызвать функцию ControlService, чтобы остановить службу. |
SERVICE_USER_DEFINED_CONTROL | Требует вызвать функцию ControlService, чтобы задавать определенный пользователем управляющий код. |
Ниже - стандартные права доступа для службы.
Право доступа | Описание |
---|---|
ACCESS_SYSTEM_SECURITY | Требует вызвать функцию QueryServiceObjectSecurity или SetServiceObjectSecurity, чтобы обратиться к SACL. Правильный способ получить этот доступ состоит в том, чтобы разрешить привилегию SE_SECURITY_NAME в текущем маркере доступа вызывающей программы, открыть дескриптор для доступа ACCESS_SYSTEM_SECURITY и затем запретить привилегию. |
DELETE | Требует вызвать функцию DeleteService, чтобы удалить службу. |
READ_CONTROL | Требует вызвать функцию QueryServiceObjectSecurity, чтобы сделать запрос дескриптора безопасности объекта службы. |
WRITE_DAC | Требует вызвать функцию SetServiceObjectSecurity, чтобы модифицировать член Dacl дескриптора безопасности объекта службы. |
WRITE_OWNER | Требует вызвать функцию SetServiceObjectSecurity, чтобы модифицировать члены Owner и Group дескриптора безопасности объекта службы. |
Ниже - общие права доступа для службы.
Право доступа | Описание |
---|---|
GENERIC_READ | Комбинирует следующие типы
доступа: STANDARD_RIGHTS_READ SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_INTERROGATE SERVICE_ENUMERATE_DEPENDENTS. |
GENERIC_WRITE | Комбинирует следующие типы
доступа: STANDARD_RIGHTS_WRITE SERVICE_CHANGE_CONFIG. |
GENERIC_EXECUTE | Комбинирует следующие типы
доступа: STANDARD_RIGHTS_EXECUTE SERVICE_START SERVICE_STOP SERVICE_PAUSE_CONTINUE SERVICE_USER_DEFINED_CONTROL. |
Диспетчер управления службами (SCM) создает дескриптор безопасности объекта службы, когда служба установлена функцией CreateService. По умолчанию дескриптор безопасности объекта службы предоставляет следующий доступ.
Учетная запись | Права доступа |
---|---|
Удаленные прошедший контроль доступа пользователи | SERVICE_USER_DEFINED_CONTROL |
Локальные прошедшие контроль доступа пользователи (включая записи LocalService и NetworkService) | READ_CONTROL SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_USER_DEFINED_CONTROL |
Учетная запись LocalSystem | READ_CONTROL SERVICE_ENUMERATE_DEPENDENTS SERVICE_INTERROGATE SERVICE_PAUSE_CONTINUE SERVICE_QUERY_CONFIG SERVICE_QUERY_STATUS SERVICE_START SERVICE_STOP SERVICE_USER_DEFINED_CONTROL |
Администраторы | DELETE READ_CONTROL SERVICE_ALL_ACCESS WRITE_DAC WRITE_OWNER |
Windows Server 2003 и Windows XP: Удаленным прошедшим контроль доступа пользователям предоставляются права доступа READ_CONTROL, SERVICE_ENUMERATE_DEPENDENTS, SERVICE_INTERROGATE, SERVICE_QUERY_CONFIG, SERVICE_QUERY_STATUS и SERVICE_USER_DEFINED_CONTROL. Эти права доступа ограничены как описано в предыдущей таблице для Windows Server 2003 SP1.
Чтобы получить или установить дескриптор безопасности для объекта службы, используйте функции QueryServiceObjectSecurity и SetServiceObjectSecurity. Дополнительную информацию смотри в статье Модификация DACL для Службы.
Когда процесс использует функцию OpenService, система проверяет требуемые права доступа по отношению к дескриптору безопасности для объекта службы.
Предоставление определенных прав доступа для неподтвержденных пользователей ( таких как SERVICE_CHANGE_CONFIG или SERVICE_STOP) может дать возможность им помешать выполнению вашей службы и, возможно, позволить им запустить приложения под учетной записью LocalSystem.