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

148

Я только что перешел с 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).

EvilDr
источник
Чтобы WordPress работал на IIS 8 на виртуальной машине Azure (Windows Server 2012 Datacenter), мне нужно было предоставить разрешения, которые вы перечислили для IIS_IUSRS, для IUSR для каталога блога в inetpub / wwwroot
dumbledad
Для тех, кто заходит в эту ветку, потому что они пытаются запустить Joomla под IIS и испытывают проблемы с настройками безопасности файлов, я написал статью в блоге с тем, что я считаю правильным решением. Возможно также применимо к WordPress или другим программам на веб-сервере на основе PHP. renniestechblog.com/index.php/information/….
RenniePet
Работает нормально после добавления полного разрешения для папки для группы пользователей IIS_IUSRS.
Тхуласирам
@ Thulasiram, но тогда вы предоставили все права всем пользователям IIS. Подумайте об этом с точки зрения хакера. Один слабый сайт, и они получают полный контроль над всеми остальными
EvilDr

Ответы:

146

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

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

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

  1. Щелкните правой кнопкой мыши домен, когда он появится в списке сайтов, и выберите « Редактировать разрешения».

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

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

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

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

  3. В текстовом поле введите IIS AppPool\MyApplicationPoolName, подставив MyApplicationPoolNameимя вашего домена или любой пул приложений, который обращается к вашему сайту, напримерIIS AppPool\mydomain.com

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

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

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

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

  6. Теперь, когда выбран новый пользователь (ваш домен), вы можете смело предоставлять любые разрешения на изменение или запись.

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

EvilDr
источник
2
Это не сработало на моем сервере IIS 8.5. Добавление IUSRработ. Добавление IIS AppPool\Cache(имя моего пула приложений) даетHTTP Error 401.3 - Unauthorized
Чарльз Бернс
14
@CharlesBurns У меня была та же проблема, и я обнаружил, что это является моей основной причиной: techras.wordpress.com/2016/03/09/… (для анонимной аутентификации было установлено использование IUSR вместо идентификатора пула приложений)
Jon
2
У меня была папка, используемая только как виртуальный каталог, и она работала нормально, пока я не поделился ею (папка windows, на которую она указала) с другой учетной записью домена, чтобы она могла просматривать файлы через нашу интрасеть. Когда я сделал это, файлы в виртуальном каталоге внезапно стали недоступными. В итоге мне пришлось добавить и то, MyComputerName\IIS_IUSRSи другое IUSRс правами «Только чтение», чтобы он снова работал. Это только для виртуальных каталогов (не приложений .net), но, может быть, кто-то найдет это полезным.
MikeTeeVee
13
Просто примечание: при поиске пользователя и компьютера, являющегося членом домена, IIS AppPool \ MyApplicationPoolName может быть не найден. В моем случае мне нужно было нажать кнопку Locations и изменить местоположение на локальный компьютер.
Статлер
3
В моих тестах имя специального пользователя для использования здесь не имеет ничего общего с доменным именем. Это имя пула приложений, которое назначено сайту в IIS. Этот пул приложений может иметь или не иметь имя, соответствующее домену вашего сайта. Таким образом, картина: IIS AppPool\[APPLICATION POOL NAME]. Пробелы в имени пула приложений принимаются. Также обратите внимание, что этот пользователь будет найден только в том случае, если в качестве типа объекта для поиска по имени установлен флажок «Встроенные участники безопасности» (верхнее поле в диалоговом окне «Выбор пользователей или групп»).
Jpsy
50

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

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

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

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

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

Трэвис Г
источник
3
Я только что установил IIS 8 под Server Essentials 2012 R2. Эта машина также является контроллером домена. В AD Users and Computers группа IIS_IUSRS пуста - она ​​не содержит пользователя IUSR. Полагаю, я мог бы добавить его в группу, но для анонимных сайтов я просто предоставлю разрешения пользователю IUSR.
Марк Берри
7
Когда я предоставил разрешения для IUSR, это сработало. Когда я предоставил разрешения IIS_IUSER, это не сработало.
ihebiheb
Iusr не является членом IIS_Iusrs. (или в Windows есть ошибка) Обычно Windows использует IIS_Iusrs. (выполнение динамических страниц или доступ к статическим страницам), но в некоторых случаях Windows использует Iusr, а не IIS_Iusrs. загрузка файла с использованием PHP является одним из таких случаев. (и если вы предоставили только iis_iusr, вы встретите исключение привилегии) ​​Я думаю, что M $ должен дать "Лучшую практику" для предоставления разрешения Iusr и IIS_Iusrs ...
finejustice
Я думаю, что теперь его изменили на группу приложений пула т.е. (IWGP). Я дал разрешения IWGP, и это сработало.
Рохит Арора
6
IUSR является частью IIS_IUSER. НЕТ ЭТО НЕ ТАК! IUSR - анонимный пользователь, IIS_IUSER - группа для пользователей
apppool
6

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

Александр
источник
7
Не забывайте, что (если у вас есть IIS7 +), правильное решение - использовать IIS AppPool\MyApplicationPoolNameсогласно моему обновленному ответу. Вам больше не нужно возиться с IUSR (S)!
EvilDr
2
Я попробовал ваше предложение, но оно не работает. Я удалил IUSR (S) из разрешения и оставил только имя пула, приложение работает под. Ресурсы стали недоступны. IIS 8.5. Когда я добавил IUSR - все заработало.
Александр
Вам необходимо опубликовать свой вопрос с как можно большей информацией о вашей ситуации, пожалуйста.
EvilDr
4

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

«Пул приложений»> «Расширенные настройки»> «Удостоверение»> «Пользовательский аккаунт»

В расширенных настройках установите для своего веб-сайта значение «Применить пользователь (сквозная аутентификация)», а не «Определенный пользователь».

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

Ян Рейлинк
источник
Спасибо, но я не использую AD. Кроме того, согласно недавней документации MS, IIS 7 и 8 уже настроены для работы, как вы описываете. Вопрос на самом деле в том, нужен ли один из указанных аккаунтов или нет, и какой из них ведет бизнес?
EvilDr
@EvilDr Спасибо за разъяснения, что вы не используете AD. Ну, IIS_IUSRS - это не пользователь, это группа. Как IIS_WPG на IIS 6.0. Вы можете прочитать о IIS_IUSRS и IUSR здесь: ссылка . Вы можете установить разрешения на изменение данных компании * для учетной записи IUSR, а также добавить этого пользователя в группу IIS_IUSRS и использовать эту учетную запись пользователя для запуска пула приложений. Вам нужно только получить общие разрешения для IIS_IUSRS для общих папок (например, TMP), если у вас есть несколько IUSR_accounts.
Ян Рейлинк
Ян, я всегда думал, что IUSR по умолчанию входит в группу IIS_IUSRS? Как проверить, так ли это, так как учетная запись IUSR является встроенной. Вы говорите, что я должен снять флажок Изменить для IIS_USRS и проверить вместо этого для IUSR? Учитывая требование для одного приложения, я не думаю, что это действительно будет иметь значение, не так ли?
EvilDr
3

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

Эшберн РК
источник
Не уверен, почему это было понижено. docs.microsoft.com/en-us/iis/get-started/planning-for-security/…
Грег
0

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

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

developer747
источник