IIS AppPoolIdentity и разрешения на запись в файловую систему - PullRequest
382 голосов
/ 25 марта 2011

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

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

Это я знаю:

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

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

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

Ответы [ 3 ]

393 голосов
/ 26 марта 2011

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

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

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

enter image description here

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

enter image description here

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

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

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

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

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

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

enter image description here

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

enter image description here

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

26 голосов
/ 02 октября 2017
  1. Щелкните правой кнопкой мыши папку.

  2. Нажмите Свойства

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

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

0 голосов
/ 13 февраля 2017

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

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

...