Начало:
1.
Windows 10, IIS 10: доступ к файлам, часть 1 (основы, термины)2.
Windows 10, IIS 10: доступ к файлам, часть 2 (архитектура IIS)3.
Windows 10, IIS 10: доступ к файлам, часть 3 (IUSR и IIS_IUSRS)4.
Windows 10, IIS 10: доступ к файлам, часть 4 (как менять доступ) Напомню, что описанные ниже тесты проводятся при начальных (умолчательных) настройках веб-сервера IIS 10. При этом наиболее важные настройки в рамках этих тестов следующие:
Программа «Диспетчер служб IIS»:
Пулы приложений - Пул «DefaultAppPool» - Дополнительные параметры... -
Модель процесса - Удостоверение - ApplicationPoolIdentity
Сайт «Default Web Site» - Анонимная проверка подлинности - IUSR
Сайт «Default Web Site» - Основные настройки - Подкл. как... -
Сквозная проверка подлинности
Во время тестов менять будем только настройку учетной записи, под которой пользователь веб-клиента (браузера) входит (посылает HTTP-запросы) на наш сайт «Default Web Site» (у меня файлы этого сайта находятся в папке «C:\inetpub\wwwroot\»), работающий под управлением нашего веб-сервера IIS 10. Менять эту настройку будем на одну из следующих двух опций:
Сайт «Default Web Site» - Анонимная проверка подлинности - IUSR
Сайт «Default Web Site» - Анонимная проверка подлинности - Удостоверение пула приложений
Я подробно описывал настройку модуля «Проверка подлинности» для сайта под управлением веб-сервера IIS в
отдельном посте. Изначально:
При переключении на опцию «Удостоверение пула приложений» («DefaultAppPool»):
Чтобы вернуться к опции с учетной записью IUSR, нужно в рассматриваемом исходном окне выбрать опцию «Указанный пользователь», нажать на кнопку «Установка...», в открывшемся дополнительном окне в поле «Имя пользователя» ввести строку «IUSR», а поля «Пароль» и «Подтвердите пароль» оставить пустыми, нажать на кнопку «OK» дополнительного окна и нажать на кнопку «OK» исходного окна:
К сожалению, в программе (сохраненной консоли программы «mmc.exe») «Управление компьютером» в содержимом групп «Пользователи» и «IIS_IUSRS» не отображаются встроенные учетные записи «IUSR» и «DefaultAppPool», хотя по факту они там есть. Чтобы показать это, я и провожу часть тестов, описанных ниже.
Тест 1. Доступ к файлам статического сайта (чтение) и динамического сайта (выполнение). В качестве файла статического сайта будет использоваться файл «index.html». В качестве файла динамического сайта будет использоваться файл «phpinfo.php» со следующим содержимым:
Как видно из кода выше, файл «phpinfo.php» лишь формирует HTML-страницу с данными, которую веб-сервер IIS затем возвратит в браузер в качестве HTTP-ответа на его HTTP-запрос. Важно отметить, что файл «phpinfo.php» не создает новых файлов на веб-сервере и не модифицирует какие-либо имеющиеся файлы на веб-сервере. Этот случай (с созданием файла на веб-сервере) будет рассмотрен в тесте 2.
Списки управления доступом к файлу «index.html» и «phpinfo.php» одинаковые (такая настройка этого списка
является настройкой по умолчанию):
1.1.
C:\inetpub\wwwroot\index.html
C:\inetpub\wwwroot\phpinfo.php
Владелец: Администраторы
Список управления доступом:
IIS_IUSRS Чтение и выполнение
TrustedInstaller Полный доступ
СИСТЕМА Полный доступ
Администраторы Полный доступ
Пользователи Чтение и выполнение
1.1. Результаты входа на сайт из браузера по URL-адресам «localhost» и «localhost/phpinfo.php»:
- IUSR: успешно открылись оба файла: «index.html» и «phpinfo.php»;
- DefaultAppPool: успешно открылись оба файла: «index.html» и «phpinfo.php».
Из списка управления доступом к файлу «index.html» и из списка управления доступом к файлу «phpinfo.php» удалим группу «IIS_IUSRS», но оставим группу «Пользователи»:
1.2.
C:\inetpub\wwwroot\index.html
C:\inetpub\wwwroot\phpinfo.php
Владелец: Администраторы
Список управления доступом:
TrustedInstaller Полный доступ
СИСТЕМА Полный доступ
Администраторы Полный доступ
Пользователи Чтение и выполнение
1.2. Результаты входа на сайт из браузера по URL-адресам «localhost» и «localhost/phpinfo.php»:
- IUSR: успешно открылись оба файла: «index.html» и «phpinfo.php»;
- DefaultAppPool: успешно открылись оба файла: «index.html» и «phpinfo.php».
Из списка управления доступом к файлу «index.html» и из списка управления доступом к файлу «phpinfo.php» удалим группу «Пользователи», но вернем группу «IIS_IUSRS»:
1.3.
C:\inetpub\wwwroot\index.html
C:\inetpub\wwwroot\phpinfo.php
Владелец: Администраторы
Список управления доступом:
IIS_IUSRS Чтение и выполнение
TrustedInstaller Полный доступ
СИСТЕМА Полный доступ
Администраторы Полный доступ
1.3. Результаты входа на сайт из браузера по URL-адресам «localhost» и «localhost/phpinfo.php»:
- IUSR: при попытке открыть каждый из файлов «index.html» и «phpinfo.php» от веб-сервера получен HTTP-ответ с кодом ошибки 401.3 (ошибка авторизации);
- DefaultAppPool: успешно открылись оба файла: «index.html» и «phpinfo.php».
Вот как у меня выглядит ошибка 401.3 в окне браузера:
Из списка управления доступом к файлу «index.html» и из списка управления доступом к файлу «phpinfo.php» удалим группу «Пользователи» и удалим группу «IIS_IUSRS»:
1.4.
C:\inetpub\wwwroot\index.html
C:\inetpub\wwwroot\phpinfo.php
Владелец: Администраторы
Список управления доступом:
TrustedInstaller Полный доступ
СИСТЕМА Полный доступ
Администраторы Полный доступ
1.4. Результаты входа на сайт из браузера по URL-адресам «localhost» и «localhost/phpinfo.php»:
- IUSR: при попытке открыть каждый из файлов «index.html» и «phpinfo.php» от веб-сервера получен HTTP-ответ с кодом ошибки 401.3 (ошибка авторизации);
- DefaultAppPool: при попытке открыть каждый из файлов «index.html» и «phpinfo.php» от веб-сервера получен HTTP-ответ с кодом ошибки 401.3 (ошибка авторизации).
Выводы по тесту 1.
Встроенные учетные записи пулов приложений веб-сервера IIS (в том числе «DefaultAppPool») по умолчанию автоматически (по умолчанию не требуется включения вручную) включаются в группу «Пользователи» и в группу «IIS_IUSRS».
Встроенная учетная запись IUSR веб-сервера IIS по умолчанию автоматически включается в группу «Пользователи», но не включается в группу «IIS_IUSRS».
Вышеописанное не отображается в программе (в сохраненной консоли программы «mmc.exe») «Управление компьютером», в разделе групп пользователей. Несмотря на это, вышеописанное работает.
Для статических файлов сайта и динамических файлов сайта, которые не создают (или не изменяют) файлы на веб-сервере, начальные (умолчательные) настройки веб-сервера IIS работают успешно. При этом следует следить за списком управления доступом к файлам и папкам, загружаемым на веб-сервер для отображения на сайте.
Если вход пользователя сайта из браузера настроен на веб-сервере IIS под учетной записью IUSR, то в списке управления доступом к файлам и папкам сайта должен быть разрешен доступ на «Чтение и выполнение» (как минимум) для пользователя IUSR (или для группы «Пользователи», в которую он входит по умолчанию). Иначе в браузере может быть получен HTTP-ответ с ошибкой 401.
Если вход пользователя сайта из браузера настроен на веб-сервере IIS под учетной записью пула приложений сайта (в тесте выше это была учетная запись «DefaultAppPool»), то в списке управления доступом к файлам и папкам сайта должен быть разрешен доступ на «Чтение и выполнение» (как минимум) для пользователя соответствующего пула приложений (или для одной из групп «Пользователи» или «IIS_IUSRS», в которые он входит по умолчанию). Иначе в браузере может быть получен HTTP-ответ с ошибкой 401.
Думаю, включение в умолчательный список управления доступом к папке «\inetpub\wwwroot\» сразу обеих групп «Пользователи» и «IIS_IUSRS» сделано для того, чтобы можно было без проблем переключить анонимную аутентификацию с пользователя IUSR на пользователя соответствующего пула приложений (у меня это «DefaultAppPool») и наоборот.
В следующем тесте я буду экспериментировать со скриптами динамического сайта, которые создают или изменяют файлы на веб-сервере.
Продолжение следует.