Здесь возникает проблема с IIS 7.5 и ASP.NET, с которыми я занимаюсь исследованием и получаю нигде. Любая помощь будет принята с благодарностью.
Мой вопрос: используя ASP.NET в IIS 7.5, как IIS и/или операционная система позволяют веб-приложению писать в папку типа C:\dump
при полной поддержке? Как мне не нужно явно добавлять доступ для записи для пользователя пула приложений (в данном случае ApplicationPoolIdentity
)?
Я знаю это:
- В IIS 7.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
, вы получите SecurityException при попытке записи в папку (как и ожидалось).
Итак, принимая во внимание все это, каким образом доступ на запись предоставляется пользователю "IIS APPPOOL\AppPoolName" ? Процесс w3wp.exe работает как этот пользователь, поэтому что позволяет этому пользователю писать в папку, у которой, похоже, нет явного доступа?
Обратите внимание, что я понимаю, что это, вероятно, было сделано ради удобства, так как было бы больно предоставить пользователю доступ ко всем папкам, которые нужно написать, если вы работаете под полным доверием. Если вы хотите ограничить этот доступ, вы всегда можете запустить приложение в разделе "Среднее доверие". Мне интересно узнать о том, как операционная система и/или IIS позволяют выполнять эти записи, даже несмотря на то, что доступ к файловой системе явно отсутствует.