Как добавить SID службы в службу?

У меня есть служба Windows со встроенным сервером TCP/IP. Клиенты и подключение, некоторая информация распространяется и т. д. Обычно служба устанавливается для входа в систему как сетевая служба.

Некоторые данные хранятся в папке ProgramData, поэтому доступ на чтение/запись к этой папке предоставляется службе во время установки. Однако таким образом доступ обычно предоставляется всем службам, использующим учетную запись сетевой службы. Я понимаю, что можно добавить SID конкретной службы, используя ChangeServiceConfig2 с SERVICE_CONFIG_SERVICE_SID_INFO. Однако оттуда совсем не ясно, как действовать и является ли это решением моей проблемы.

Любая помощь приветствуется!


person SpaghettiCook    schedule 07.01.2013    source источник
comment
Это называется сервисной изоляцией. Указание SERVICE_SID_TYPE_UNRESTRICTED как тип SID указывает SCM добавить SID службы к маркеру процесса службы, что позволяет службе получить доступ к ресурсам, которые вы, возможно, настроили для разрешения доступа только к вашей конкретной службе.   -  person sergmat    schedule 07.01.2013
comment
Спасибо за ваш комментарий! - я новичок в этом; почему это не ответ? Насколько я понимаю, SCM добавляет SID конкретной службы в процесс при запуске службы. Я могу использовать имя SID «NT SERVICE\‹service_name›» для создания структуры данных SID. Некоторые вещи до сих пор неясны: 1) Могу ли я использовать SID до запуска службы? т.е. могу ли я предоставить этому SID доступ к определенной папке? 2) Когда я настраиваю службу для входа во встроенную сетевую службу, она по-прежнему наследует права от этой учетной записи?   -  person SpaghettiCook    schedule 08.01.2013
comment
1) Почему нет? 2) Да 3) Идентификаторы SID службы реализованы как часть SID группы маркера для любого процесса, в котором размещается служба.   -  person sergmat    schedule 08.01.2013


Ответы (1)


Это называется изоляция службы. Указание параметра SERVICE_CONFIG_SERVICE_SID_INFO с SERVICE_SID_INFO< Структура /a> с типом SID указывает SCM добавить SID службы к маркеру процесса службы, что позволяет службе получить доступ к ресурсам, которые вы, возможно, настроили для разрешения доступа только к вашей конкретной службе. Также вы можете использовать команду sc

sc <server> sidtype [service name] [type]

OPTIONS:
 type = <none|unrestricted|restricted>

sc <server> qsidtype [service name]
person sergmat    schedule 08.01.2013
comment
Спасибо Сергмат! В моем лексиконе явно отсутствовал термин «изоляция службы». Теперь намного проще найти документацию. Кроме того, ясно, какой SID использовать, когда я хочу добавить ACE в ACL объекта. Я не читал ни в одной документации, как это будет видно в графическом интерфейсе расширенных настроек безопасности объекта, но, думаю, узнаю, когда изменю настройки программно. - person SpaghettiCook; 10.01.2013