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

Как назначить разрешения учетной записи ApplicationPoolIdentity

В IIS 7 в Windows Server 2008 пулы приложений можно запускать как учетную запись ApplicationPoolIdentity вместо учетной записи NetworkService.

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

Не только я столкнулся с этой проблемой: см. Проблемы с ApplicationPoolIdentity в IIS 7.5 + Windows 7 для примера.


«К сожалению, это ограничение средства выбора объектов в Windows Server 2008 / Windows Vista - как уже было обнаружено несколькими людьми, вы все еще можете управлять списком ACL для удостоверения пула приложений с помощью таких инструментов командной строки, как icacls. "

Обновить: Первоначальный вопрос касался Windows Server 2008, но решение проще для Windows Server 2008 R2 и Windows Server 2012 (а также Windows 7 и 8). Вы можете добавить пользователя через пользовательский интерфейс NTFS, введя его напрямую. Имя имеет формат IIS APPPOOL \ {имя пула приложений}. Например: IIS APPPOOL \ DefaultAppPool.

IIS APPPOOL\{app pool name}

Примечание. Согласно приведенным ниже комментариям, следует помнить о двух вещах:

  • Введите строку непосредственно в поле «Выбрать пользователя или группу», а не в поле поиска.
  • В доменной среде вам необходимо сначала установить местоположение на свой локальный компьютер.

Ссылка на статью Microsoft Docs: Удостоверения пула приложений> Защита ресурсов

Исходный ответ: (для Windows Server 2008) Это отличная функция, но, как вы упомянули, она еще не реализована полностью. Вы можете добавить идентификатор пула приложений из командной строки с помощью чего-то вроде icacls, а затем управлять им из графического интерфейса. Например, запустите что-то вроде этого из командной строки:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

Затем в проводнике Windows перейдите в папку wwwroot и отредактируйте разрешения безопасности. Вы увидите, как выглядит группа (значок группы) под названием DefaultAppPool. Теперь вы можете редактировать разрешения.

Однако вам совсем не обязательно это использовать. Это бонус, который вы можете использовать, если хотите. Вы можете использовать старый способ создания настраиваемого пользователя для каждого пула приложений и назначения настраиваемого пользователя на диск. Имеет полную поддержку пользовательского интерфейса.

Этот метод внедрения SID удобен тем, что позволяет использовать одного пользователя, но полностью изолировать каждый сайт друг от друга без необходимости создавать уникальных пользователей для каждого пула приложений. Довольно впечатляюще, и с поддержкой пользовательского интерфейса будет еще лучше.

Примечание. Если вам не удается найти пользователя пула приложений, проверьте, запущена ли служба Windows под названием Application Host Helper Service. Это служба, которая сопоставляет пользователей пула приложений с учетными записями Windows.

Вы должны убедиться, что From this location поле установлено в local machine а не домен.

У меня была такая же проблема, и как только я изменил ее, она работала нормально.

Вы действительно должны создавать группы для каждой «роли» и назначать этой группе доступ к файловой системе. Затем при необходимости добавьте пул приложений в группы для конкретных ролей. Таким образом, даже если вы удалите пул приложений позже (и виртуальный пользователь перейдет пуф), вам не нужно беспокоиться о восстановлении всех разрешений, вы просто добавляете пул приложений для замены в существующую группу.

Прочитав ответ @Scott Forsyth - MVP, я попытался перезапустить службу Application Host Helper. Это решило проблему для меня.

Я запускал WS8 R2 и не мог добавить IIS APPPOOL\DefaultAppPool через проводник Windows. Единственный способ работы - командная строка:

cacls [ПУТЬ К ФАЙЛУ] / T / E / G "IIS APPPOOL \ DefaultAppPool": C

Если этот вопрос касается того, как выполнить _sp_send_dbmail в базе данных msdb (используя хранимую процедуру SQL send Database Mail в msdb), вот некоторые решения. Добавьте имя пользователя приложения .net вашей базы данных (которое определено в строке подключения в приложении .net) пользователю msdb с членством в роли DatabaseMailUserRole