Права доступа к объекту службы


Ниже - определение прав доступа для службы.

Право доступа Описание
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.

Назад в оглавление
На главную страницу

Hosted by uCoz