Обзор разрешений IIS7 - ApplicationPoolIdentity
Недавно мы обновились до IIS7 в качестве основного веб-сервера, и мне нужен обзор с точки зрения разрешений. Ранее при необходимости записи в файловую систему я бы предоставлял пользователю AppPool (сетевая служба) доступ к каталогу или файлу.
В IIS7 я вижу, по умолчанию пользователь AppPool установлен на ApplicationPoolIdentity
, Поэтому, когда я проверяю диспетчер задач, я вижу, что в учетной записи пользователя с именем "WebSite.com" выполняется процесс IIS ("Website.com" - это имя веб-сайта в IIS).
Однако эта учетная запись пользователя не существует, если я пытаюсь использовать ее для предоставления разрешений. Итак, как мне определить, для какого пользователя тоже нужно предоставить разрешения?
Изменить ======================================================= =============================
Ниже приведена информация о проблеме на снимке экрана. Наш веб-сайт (www.silverchip.co.uk) работает под именем пользователя SilverChip.co.uk. Однако, когда я добавляю разрешения, этот пользователь не существует!
================================= См. Изображение AppPool
8 ответов
ApplicationPoolIdentity на самом деле является лучшей практикой для использования в IIS7. Это динамически созданная непривилегированная учетная запись. Чтобы добавить защиту файловой системы для определенного пула приложений, см. Раздел "IIS.net Identity". Быстрая версия:
Если пул приложений называется "DefaultAppPool" (просто замените этот текст ниже, если он назван по-другому)
- Откройте проводник Windows
- Выберите файл или каталог.
- Щелкните правой кнопкой мыши файл и выберите "Свойства"
- Выберите вкладку "Безопасность"
- Нажмите кнопку "Изменить", а затем кнопку "Добавить"
- Нажмите кнопку "Locations" и убедитесь, что вы выбрали локальный компьютер. (Не домен Windows, если сервер принадлежит одному.)
- Введите "IIS AppPool \ DefaultAppPool" в текстовом поле "Введите имена объектов для выбора:". (Не забудьте изменить здесь "DefaultAppPool" на пул приложений, который вы назвали.)
- Нажмите кнопку "Проверить имена" и нажмите "ОК".
Не забудьте использовать локальное имя сервера, а не имя домена, при разрешении имени "IIS AppPool\DefaultAppPool" (просто напоминание, потому что это меня немного смутило):
Предоставление доступа к пользователю IIS AppPool\YourAppPoolName может быть недостаточно для стандартных конфигураций IIS.
В моем случае у меня все еще была ошибка HTTP Error 401.3 - Неавторизовано после добавления пользователя AppPool, и это было исправлено только после добавления разрешений пользователю IUSR.
Это необходимо, поскольку по умолчанию анонимный доступ осуществляется с использованием IUSR. Вы можете установить другого конкретного пользователя, пул приложений или продолжить использование IUSR, но не забудьте установить соответствующие разрешения.
Кредиты к этому ответу: Ошибка HTTP 401.3 - Несанкционированный
В Windows Server 2008(r2) вы не можете назначить удостоверение пула приложений для папки через Свойства-> Безопасность. Вы можете сделать это через командную строку администратора, используя следующее:
icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Часть A: Настройка пула приложений
Предположим, что пул приложений называется "MyPool". Перейдите в "Дополнительные параметры" пула приложений из диспетчера IIS.
Прокрутите вниз до "Идентичность". Попытка отредактировать значение вызовет диалоговое окно. Выберите "Встроенная учетная запись" и под ней выберите "ApplicationPoolIdentity".
Несколько строк ниже "Идентичность", вы должны найти "Загрузить профиль пользователя". Это значение должно быть установлено на "True".
Часть B: Настройка вашего сайта
- Название сайта: SiteName (только пример)
- Физический путь: C:\ Независимо (только пример)
- Подключиться как...: пользователь приложения (сквозная аутентификация) (вышеуказанные настройки можно найти в разделе "Основные настройки" сайта в диспетчере IIS)
- После настройки основных параметров найдите конфигурацию "Аутентификация" в разделе "IIS" на главной консоли сайта. Открой это. Вы должны увидеть опцию "Анонимная аутентификация". Убедитесь, что он включен. Затем щелкните правой кнопкой мыши и "Изменить...". Выберите "Идентификация пула приложений".
Часть C: Настройка вашей папки
Папка, о которой идет речь, это C:\Wh независимо
- Перейдите в Свойства - Общий доступ - Расширенный общий доступ - Разрешения и установите флажок "Поделиться этой папкой"
- В том же диалоговом окне вы найдете кнопку "Разрешения". Нажмите на это.
- Откроется новое диалоговое окно. Нажмите "Добавить".
- Откроется новое диалоговое окно "Выбор пользователей или групп". В разделе "Из этого местоположения" убедитесь, что имя совпадает с именем вашего локального хост-компьютера. Затем в разделе "Введите имена объектов" введите "IIS AppPool\MyPool", нажмите "Проверить имена", а затем "ОК".
- Дайте полные разрешения на совместное использование для пользователя "MyPool". Примените его и закройте свойства папки
- Снова откройте свойства папки. На этот раз перейдите в Безопасность - Дополнительно - Разрешение и нажмите Добавить. Там будет опция "Выбрать принципала" вверху или какой-то другой вариант, чтобы выбрать пользователя. Нажмите на это.
- Диалоговое окно "Выбор пользователей или групп" откроется снова. Повторите шаг 4.
- Предоставьте пользователю MyPool все или столько разрешений, сколько вам нужно.
- Установите флажок "Заменить все разрешения дочернего объекта...", а также "Применить и закрыть".
Теперь вы должны иметь возможность использовать просмотр веб-сайта
Топ Ответ от Джона Адамса
Вот как реализовать это для людей PowerShell
$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
Я исправил все свои проблемы с asp.net, просто создав нового пользователя с именем IUSER с паролем и добавив в него сетевую службу и группы пользователей. Затем создайте все свои виртуальные сайты и приложения, установите для аутентификации IUSER с его паролем... установите высокоуровневый доступ к файлу, чтобы включить IUSER и BAM, исправлено не менее 3-4 проблем, включая этот.
Дейв
Просто чтобы добавить к путанице, диалоговое окно "Эффективные разрешения" (Windows Explorer) не работает для этих имен входа. У меня есть сайт "Umbo4", использующий сквозную аутентификацию, и я посмотрел на Действующие разрешения пользователя в корневой папке сайта. Тест "Проверка имен" разрешил имя "IIS AppPool\Umbo4", но "Действующие разрешения" показывают, что у пользователя вообще не было разрешений для папки (все флажки сняты).
Затем я явно исключил этого пользователя из папки, используя вкладку "Безопасность". Это привело к сбою сайта с ошибкой HTTP 500.19, как и ожидалось. Однако действующие разрешения выглядели точно так же, как и раньше.