Какие разрешения необходимы для запуска службы через ASP.NET? - PullRequest
1 голос
/ 31 мая 2011

Мне было интересно, какие привилегии мне нужны, чтобы пользователь мог запустить службу на нашем сервере.

Ситуация следующая: некоторые люди на нашем сайте могут запускать определенную службу на сервере (Windows 2008 и IIS7). До сих пор у меня работал способ указания пула приложений, который я создал с помощью своей учетной записи пользователя (метод подражания из msdn по какой-то причине не работает). Однако теперь я хочу изменить эту учетную запись на учетную запись пользователя, у которого есть только полномочия на запуск и остановку службы (и все, что нужно для того, чтобы он это сделал).

Сайт написан на ASP.NET и C #. Я использую ServiceController для запуска и остановки моих служб.

Какие привилегии я должен назначить этому пользователю?

РЕДАКТИРОВАТЬ: Я просто хочу кое-что прояснить здесь. Мне удалось заставить эту штуку работать через пул приложений (хотя она не работает через отладчик) . Но он работает только с пользователем, который входит в группу Администраторы , что мне не нужно. Я хочу указать специального пользователя, который только сможет запускать и останавливать службу через веб-сайт. Так какие привилегии мне нужны? Пожалуйста, будьте конкретны.

РЕДАКТИРОВАТЬ 2: Я выяснил, почему мой сервис не запускается в отладчике. Я не запускал Visual Studio с правами администратора. Сейчас я чувствую себя настолько глупо. В любом случае, вопрос все еще стоит, поскольку мне все еще нужен мой специальный пользователь с правильными разрешениями.

Любой комментарий будет оценен! С уважением, Флорис Девриендт

Ответы [ 3 ]

0 голосов
/ 31 мая 2011

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

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

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

Оба эти действия используют инструмент командной строки sc. Надеюсь, что вы можете собрать достаточно вместе для ваших конкретных обстоятельств. Что-то вроде:

sc sdset scmanager D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CCLCRPRC;;;S-1-5-3-3127463467463)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

где S-1-5-3-3127463467463 - SID для учетной записи веб-сайта, а:

sc sdset Alerter D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCLCSWLOCRRCWPRP;;;S-1-5-3-3127463467463)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

где Alerter - это название конкретной службы, а S-1-5-3-3127463467463 - это снова SID для учетной записи веб-сайта.

(Не уверен, стоит ли разбивать эти команды, чтобы сделать их более читабельными в SO - они не должны иметь разрывов строки при запуске в командной строке)

0 голосов
/ 31 мая 2011

вы должны дать право на присвоение вашей службы пользователю, который вы используете для пула приложений.

  • Нажмите Пуск, выберите Настройки, нажмите Панель управления, а затем дважды щелкнитеАдминистрирование.
  • Дважды щелкните Службы
  • На вкладке Вход в систему щелкните Локальная системная учетная запись, а затем нажмите Применить.
  • На вкладке Общие нажмите Пуск, чтобы перезапуститьслужба.
  • Выйти из службы.
0 голосов
/ 31 мая 2011

Вы должны установить для идентификатора олицетворения значение true в вашем файле web.config, и если вы используете проверку подлинности Windows, необходимо настроить это в IIS.если вы используете службу WCF между ними, вам, возможно, придется взглянуть на Олицетворение в WCF.

...