Разрешения 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
- Читать и выполнить
- Список содержимого папки
- Читать
- Написать
IIS_IUSRS
- изменять
- Читать и выполнить
- Список содержимого папки
- Читать
- Написать
Кажется, это сработало, но я обеспокоен тем, что было установлено слишком много привилегий. Я прочитал противоречивую информацию онлайн о том, нужен ли вообще IUSR здесь. Может кто-нибудь уточнить, какие пользователи / разрешения будет достаточно для создания и удаления документов в этой папке, пожалуйста? Кроме того, входит ли IUSR в группу IIS_IUSRS?
Обновление и решение
Пожалуйста, смотрите мой ответ ниже. Мне пришлось сделать это, к сожалению, так как некоторые недавние предложения не были хорошо продуманы или даже небезопасны (IMO).
7 ответов
Я ненавижу публиковать свой собственный ответ, но некоторые ответы недавно проигнорировали решение, которое я разместил в своем собственном вопросе, предлагая подходы, которые являются ничем иным как безрассудством.
Короче говоря - вам вообще не нужно редактировать какие-либо привилегии учетной записи Windows. Это только создает риск. Процесс полностью управляется в IIS с использованием унаследованных привилегий.
Применение прав на изменение / запись к правильной учетной записи пользователя
Щелкните правой кнопкой мыши домен, когда он появится в списке сайтов, и выберите " Редактировать разрешения".
На вкладке Безопасность вы увидите
MACHINE_NAME\IIS_IUSRS
в списке. Это означает, что IIS автоматически имеет разрешение только для чтения для каталога (например, для запуска ASP.Net на сайте). Вам не нужно редактировать эту запись.Нажмите кнопку Изменить, затем Добавить...
В текстовом поле введите
IIS AppPool\MyApplicationPoolName
, подставляяMyApplicationPoolName
с вашим доменным именем, напримерIIS AppPool\mydomain.com
Нажмите кнопку Проверить имена. Введенный вами текст преобразуется (обратите внимание на подчеркивание):
Нажмите OK, чтобы добавить пользователя
Теперь, когда выбран новый пользователь (ваш домен), вы можете смело предоставлять любые разрешения на изменение или запись.
IUSR является частью группы IIS_IUSER. Поэтому я думаю, что вы можете удалить разрешения для IUSR, не беспокоясь. Дальнейшее чтение
Однако со временем возникла проблема, поскольку все больше и больше системных служб Windows начали работать как NETWORKSERVICE. Это связано с тем, что службы, работающие как NETWORKSERVICE, могут вмешиваться в другие службы, работающие под тем же именем. Поскольку рабочие процессы IIS по умолчанию выполняют сторонний код (Classic ASP, ASP.NET, код PHP), пришло время изолировать рабочие процессы IIS от других системных служб Windows и запускать рабочие процессы IIS под уникальными идентификаторами. Операционная система Windows предоставляет функцию "Виртуальные учетные записи", которая позволяет IIS создавать уникальные идентификаторы для каждого из своих пулов приложений. DefaultAppPool - это пул по умолчанию, который назначается всему пулу приложений, который вы создаете.
Чтобы сделать его более безопасным, вы можете изменить IIS DefaultAppPool Identity на ApplicationPoolIdentity.
Что касается разрешения, Create и Delete суммирует все права, которые могут быть предоставлены. Поэтому все, что вы назначили в группу IIS_USERS, - это то, что им потребуется. Ни больше ни меньше.
надеюсь это поможет.
Когда я добавил разрешение IIS_IUSRS в папку сайта, ресурсы, такие как js и css, все еще были недоступны (ошибка 401, запрещена). Однако когда я добавил IUSR - все стало хорошо. Так что наверняка "вы НЕ МОЖЕТЕ удалить разрешения для IUSR, не беспокоясь", дорогой @Travis G@
@EvilDr Вы можете создать учетную запись IUSR_[идентификатор] в своей среде AD и разрешить запуск определенного пула приложений под этой учетной записью IUSR_[идентификатор]:
"Пул приложений" > "Дополнительные настройки" > "Удостоверение" > "Пользовательский аккаунт"
В расширенных настройках установите для своего веб-сайта значение "Применимый пользователь (сквозная аутентификация)", а не "Определенный пользователь".
Теперь предоставьте этому IUSR_[идентификатору] соответствующие разрешения NTFS для файлов и папок, например: изменение данных компании.
Группа IIS_IUSRS имеет известность, только если вы используете ApplicationPool Identity. Даже если у вас есть эта группа выглядит пустой во время выполнения, IIS добавляет в эту группу для запуска рабочего процесса в соответствии с литературой Microsoft.
Я бы использовал конкретного пользователя (а не пользователя приложения). Тогда я включу олицетворение в приложении. Как только вы сделаете это, какая бы учетная запись ни была указана в качестве конкретного пользователя, эти учетные данные будут использоваться для доступа к локальным ресурсам на этом сервере (не для внешних ресурсов).
Конкретные настройки пользователя специально предназначены для доступа к локальным ресурсам.
Разрешения IIS_IUser более чем достаточно для создания или удаления файлов. Нет необходимости в разрешении IUser. Я даю это разрешение для более чем 20 папок. Я ищу альтернативный способ сделать это тоже. Предложите мне, если какой-либо вариант доступен