Разрешения на доступ к файлам IIS AppPoolIdentity и файловой системы

Вот проблема с IIS 7.5 и ASP.NET, с которыми я занимаюсь исследованием и не получаю нигде. Любая помощь будет принята с благодарностью.

Мой вопрос: используя ASP.NET в IIS 7.5, как IIS и / или операционная система позволяют веб-приложению записывать в папку типа C:\dump при запуске под полным доверием? Как мне не нужно явно добавлять доступ для записи для пользователя пула приложений (в данном случае ApplicationPoolIdentity )?

Этого я знаю:

  • В IIS 7.5 идентификатор по умолчанию для пула ApplicationPoolIdentityApplicationPoolIdentity .
  • ApplicationPoolIdentity представляет собой учетную запись пользователя Windows под названием «IIS APPPOOL \ AppPoolName», которая создается при создании пула приложений, где AppPoolName является именем пула приложений.
  • Пользователь «IIS APPPOOL \ AppPoolName» по умолчанию является членом группы IIS_IUSRS .
  • Если вы работаете под полным доверием, ваше веб-приложение может записывать во многие области файловой системы (исключая такие папки, как C:\Users , C:\Windows и т. Д.). Например, у вашего приложения будет доступ к записи в некоторые папки, например C:\dump .
  • По умолчанию группе IIS_IUSRS не предоставляется доступ для чтения или записи к C:\dump (по крайней мере, не доступ, который отображается на вкладке «Безопасность» в проводнике Windows).
  • Если вы IIS_IUSRS доступе записи к IIS_IUSRS , вы получите SecurityException при попытке записи в папку (как и ожидалось).

Итак, принимая во внимание все это, каким образом доступ на запись предоставляется пользователю «IIS APPPOOL \ AppPoolName»? Процесс w3wp.exe выполняется как этот пользователь, поэтому что позволяет этому пользователю писать в папку, к которой у него явно нет доступа?

Обратите внимание, что я понимаю, что это, вероятно, было сделано ради удобства, так как было бы больно предоставить пользователю доступ ко всем папкам, которые ему нужно написать, если вы работаете под полным доверием. Если вы хотите ограничить этот доступ, вы всегда можете запустить приложение в разделе «Среднее доверие». Мне интересно узнать о том, как операционная система и / или IIS позволяют выполнять эти записи, даже несмотря на то, что доступ к файловой системе явно отсутствует.

3 Solutions collect form web for “Разрешения на доступ к файлам IIS AppPoolIdentity и файловой системы”

ApplicationPoolIdentity присваивается членство в группе Users а также группе IIS_IUSRS . На первый взгляд это может выглядеть несколько тревожным, однако группа Users имеет несколько ограниченные права NTFS.

Например, если вы попытаетесь создать папку в папке C:\Windows вы обнаружите, что не можете. ApplicationPoolIdentity прежнему должен иметь возможность читать файлы из системных папок Windows (иначе как еще один рабочий процесс сможет динамически загружать важные DLL).

Что касается ваших замечаний о возможности записи в папку c:\dump . Если вы посмотрите на разрешения в расширенных настройках безопасности, вы увидите следующее:

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

Смотрите, что специальное разрешение унаследовано от c:\ :

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

Именно поэтому ApplicationPoolIdentity вашего сайта может читать и записывать в эту папку. Это право унаследовано от диска c:\ .

В общей среде, где у вас, возможно, несколько сотен сайтов, каждая из которых имеет свой собственный пул приложений и идентификатор пула приложений, вы сохранили бы папки сайта в папке или томе, в которых была удалена группа Users и установлены разрешения, чтобы только администраторы и учетная запись SYSTEM имеет доступ (с наследованием).

Затем вы должны индивидуально назначать требуемые разрешения для каждого IIS AppPool\[name] в корневой папке сайта.

Вы также должны убедиться, что все папки, созданные вами, где хранятся потенциально чувствительные файлы или данные, удалены группой Users . Вы также должны убедиться, что все приложения, которые вы устанавливаете, не хранят конфиденциальные данные в папках c:\program files\[app name] и вместо этого используют папки профиля пользователя.

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

Членство в группе ApplicationPoolIdentity может быть проверено с помощью инструмента SysInternals Process Explorer . Найдите рабочий процесс, который запущен с идентификатором пула приложений, который вам интересен (вам нужно будет добавить столбец « User Name в список столбцов для отображения:

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

Например, у меня есть пул с именем 900300 который имеет идентификатор пула приложений IIS APPPOOL\900300 . Щелкнув правой кнопкой мыши на свойствах процесса и выбрав вкладку «Безопасность», мы видим:

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

Как видим, IIS APPPOOL\900300 является членом группы Users .

  1. Щелкните правой кнопкой мыши папку.

  2. Щелкните Свойства

  3. Нажмите вкладку «Безопасность». Вы увидите что-то вроде этого:

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

  1. Нажмите кнопку «Изменить …» на приведенном выше экране. Вы увидите что-то вроде этого:

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

  1. Нажмите кнопку «Добавить …» на экране выше. Вы увидите что-то вроде этого:

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

  1. Нажмите кнопку «Locations …» на приведенном выше экране. Вы увидите что-то подобное. Теперь перейдите к самой вершине этой древовидной структуры и выберите имя своего компьютера, затем нажмите «ОК».

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

  1. Теперь введите «iis apppool \ your_apppool_name» и нажмите кнопку «Проверить имена». Если приложение существует, вы увидите свое имя приложения в текстовом поле с подчеркиванием в нем. Нажмите кнопку «ОК».

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

  1. Отметьте / снимите отметку о том, какой доступ вам нужен для предоставления учетной записи

  2. Нажмите кнопку «Применить», а затем «ОК».

Каждый пул приложений в среде II создает собственную защищенную папку пользователя с ПОЛНЫМ разрешением на чтение и запись по умолчанию в каталоге c: \ users. Откройте папку «Ваши пользователи» и посмотрите, какие папки пулов приложений есть, щелкните правой кнопкой мыши и проверьте их права для назначенной виртуальной учетной записи пула приложений. Вы должны увидеть добавленную вами учетную запись пула приложений, доступную для чтения и записи, назначенной ее корневому и подпапкам.

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

  • Обзор разрешений IIS7 - ApplicationPoolIdentity
  • Ошибка ssh «разрешения слишком открыта»
  • Как использовать пользовательские разрешения в Android?
  • Как заставить приложение получать трансляцию, когда другие приложения установлены или удалены
  • База данных SQLite: только для чтения
  • Какое разрешение требуется для доступа к Интернету из приложения Android?
  • проблема с правами на запись файла в папку «Program Files»
  • Диалоговое окно подтверждения разрешения хоста
  • npm ошибки установки с ошибкой: ENOENT, chmod
  • Разрешение отклонено (отсутствует разрешение INTERNET?): Но предоставляется разрешение
  • Множественные разрешения для Android 6.0
  • Interesting Posts

    Regex: Я хочу, чтобы это И было И что … в любом порядке

    Размер текста внезапно стал больше на всех сайтах в Google Chrome

    DD-WRT: как разрешить переадресацию портов применять к запросам, исходящим из локальной сети?

    Как уменьшить размер исполняемого файла, созданного компилятором MinGW g ++?

    Как поставить страх перед Богом (законом) в Wi-Fi, взламывающий соседей

    Нужно ли использовать autoreleasepool в программе Swift?

    Обтекатель объектных объектов Swift в apple / swift

    Предоставление частичных представлений с использованием ajax

    Оптимизация утечки памяти в JavaFX

    UnicodeDecodeError при чтении CSV-файла в Pandas с Python

    Excel. Создайте текстовый файл, названный по имени ячейки, содержащей другие данные ячейки.

    Федора, бродяга и либби

    Помощь с передачей ArrayList и разумной активностью

    Как использовать .jar-файлы в NetBeans?

    android: windowSoftInputMode = “adjustResize” не имеет никакого значения?

    Давайте будем гением компьютера.