Разрешения IIS_IUSRS и IUSR в IIS8

Я только что отошел от IIS6 на Win2003 до IIS8 на Win2012 для размещения приложений ASP.NET.

В одной конкретной папке в моем приложении мне нужно создать и удалить файлы. После копирования файлов на новый сервер я продолжал видеть следующие ошибки при попытке удалить файлы:

Доступ к пути "D:\WebSites\myapp.co.uk\companydata\filename.pdf" отклоняется.

Когда я проверяю IIS, я вижу, что приложение работает под учетной записью DefaultAppPool, однако я никогда не устанавливал разрешения Windows в этой папке, чтобы включить IIS AppPool\DefaultAppPool

Вместо этого, чтобы перестать кричать клиентам, я предоставил следующие разрешения для папки:

IUSR

  • Чтение и выполнение
  • Содержание списка папок
  • Read
  • Запись

IIS_IUSRS

  • Изменить
  • Чтение и выполнение
  • Содержание списка папок
  • Read
  • Запись

Это, похоже, сработало, но я обеспокоен тем, что было установлено слишком много привилегий. Я читал противоречивую информацию в Интернете о том, действительно ли вообще IUSR. Может ли кто-нибудь уточнить, какие пользователи/разрешения будут достаточными для создания и удаления документов в этой папке? Кроме того, IUSR входит в группу IIS_IUSRS?

Обновление и решение

Обратитесь к моему ответу ниже. Я должен был сделать это грустно, поскольку некоторые недавние предложения не были хорошо продуманы или даже безопасны (IMO).

Ответ 1

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

Короче говоря - вам не нужно вообще редактировать привилегии учетной записи пользователя Windows. Это приводит только к риску. Процесс полностью управляется в IIS с использованием унаследованных привилегий.

Применение разрешений Modify/Write к правильной учетной записи пользователя

  • Щелкните правой кнопкой мыши домен, когда он появится в списке "Сайты", и выберите "Редактировать разрешения"

    введите описание изображения здесь

    На вкладке "Безопасность" вы увидите MACHINE_NAME\IIS_IUSRS. Это означает, что IIS автоматически имеет разрешение только на чтение в каталоге (например, для запуска ASP.Net на сайте). Вам не нужно редактировать эту запись.

    введите описание изображения здесь

  • Нажмите кнопку "Изменить", затем "Добавить..."

  • В текстовом поле введите IIS AppPool\MyApplicationPoolName, подставив MyApplicationPoolName своим доменным именем, например. IIS AppPool\mydomain.com

    введите описание изображения здесь

  • Нажмите кнопку "Проверить имена". Текст, который вы набрали, преобразуется (обратите внимание на подчеркивание):

    введите описание изображения здесь

  • Нажмите OK, чтобы добавить пользователя

  • При выборе нового пользователя (вашего домена) теперь вы можете безопасно предоставлять разрешения на изменение или запись

    введите описание изображения здесь

Ответ 2

IUSR является частью группы IIS_IUSER. Так что, я думаю, вы можете удалить разрешения для IUSR, не беспокоясь. Дополнительная литература

Однако со временем возникла проблема, так как все больше и больше системных служб Windows начали запускаться как NETWORKSERVICE. Это связано с тем, что службы, работающие под управлением NETWORKSERVICE, могут вмешиваться в другие службы, которые работают под одинаковой идентификацией. Поскольку по умолчанию рабочие процессы IIS запускают сторонний код (классический ASP, ASP.NET, код PHP), настало время изолировать рабочие процессы IIS от других системных служб Windows и запускать рабочие процессы IIS под уникальными идентификаторами. Операционная система Windows предоставляет функцию "Виртуальные учетные записи", которая позволяет IIS создавать уникальные идентификаторы для каждого из своих пулов приложений. DefaultAppPool - это пул по умолчанию, который назначается для всего пула приложений, который вы создаете.

Чтобы сделать его более безопасным, вы можете изменить идентификатор IA DefaultAppPool Identity на ApplicationPoolIdentity.

В отношении разрешения Create и Delete суммируют все права, которые могут быть предоставлены. Поэтому все, что вы назначили группе IIS_USERS, это то, что они потребуют. Ни больше ни меньше.

надеюсь, что это поможет.

Ответ 3

Когда я добавил разрешение IIS_IUSRS на папку сайта - ресурсы, такие как js и css, все еще были недоступны (ошибка 401, запрещена). Однако, когда я добавил IUSR - это стало нормально. Так что "вы НЕ МОЖЕТЕ удалить разрешения для IUSR, не беспокоясь", дорогой @Travis G @

Ответ 4

@EvilDr Вы можете создать учетную запись IUSR_ [идентификатор] в своей среде AD и позволить определенному пулу приложений работать под учетной записью IUSR_ [идентификатор]:

"Пул приложений" > "Дополнительные настройки" > "Идентичность" > "Пользовательская учетная запись"

Настройте свой сайт на "Аппликационный пользователь (сквозная аутентификация)", а не "Конкретный пользователь" в Расширенных настройках.

Теперь дайте IUSR_ [identifier] соответствующие разрешения NTFS для файлов и папок, например: измените на companydata.

Ответ 5

Я бы использовал конкретного пользователя (и НЕ пользователя приложения). Затем я включу олицетворение в приложении. После того, как вы сделаете то, что установлено в качестве конкретного пользователя, эти учетные данные будут использоваться для доступа к локальным ресурсам на этом сервере (не для внешних ресурсов).

Конкретный пользовательский параметр специально предназначен для доступа к локальным ресурсам.

Ответ 6

Группа IIS_IUSRS имеет известность только в том случае, если вы используете ApplicationPool Identity. Несмотря на то, что эта группа выглядит пустой во время выполнения, IIS добавляет эту группу для запуска рабочего процесса в соответствии с литературой Microsoft.

Ответ 7

Разрешения IIS_IUser более чем достаточно для создания или удаления файлов. Нет необходимости в разрешении IUser. Я даю это разрешение для более чем 20 папок. Я также ищу альтернативный способ сделать это. Предложите мне, доступен ли какой-либо вариант.