Вот проблема с 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
группы. - Если вы работаете под Full Trust, веб - приложение может написать во многих областях файловой системы (исключая папки , такие как
C:\Users
,C:\Windows
и т.д.). Например, ваше приложение будет иметь доступ к записи в некоторых папках, например,C:\dump
. - По умолчанию
IIS_IUSRS
группе не предоставлены права на чтение или записьC:\dump
(по крайней мере, на доступ, который виден через вкладку «Безопасность» в проводнике Windows). - Если вы запретите доступ для записи
IIS_IUSRS
, вы получите SecurityException при попытке записи в папку (как и ожидалось).
Итак, учитывая все это, как предоставляется доступ на запись пользователю «IIS APPPOOL \ AppPoolName»? Процесс w3wp.exe запускается от имени этого пользователя, так что позволяет этому пользователю писать в папку, к которой у него нет явного доступа?
Обратите внимание, что я понимаю, что, вероятно, это было сделано для удобства, так как было бы затруднительно предоставить пользователю доступ к каждой папке, в которую он должен писать, если вы работаете в режиме полного доверия. Если вы хотите ограничить этот доступ, вы всегда можете запустить приложение под Medium Trust. Я заинтересован в том, чтобы узнать, как операционная система и / или IIS позволяют выполнять эти записи, даже если нет явного доступа к файловой системе.
Щелкните правой кнопкой мыши на папке.
Нажмите Свойства
Нажмите вкладку «Безопасность». Вы увидите что-то вроде этого:
Установите / снимите флажок для доступа к учетной записи
Нажмите кнопку Применить, а затем ОК.
источник
Каждый пул приложений в IIs создает собственную защищенную пользовательскую папку с ПОЛНЫМ разрешением на чтение / запись по умолчанию в папке c: \ users. Откройте папку «Пользователи» и посмотрите, какие папки пула приложений есть, щелкните правой кнопкой мыши и проверьте их права для назначенной виртуальной учетной записи пула приложений. Вы должны увидеть, что ваша учетная запись пула приложений уже добавлена с правами чтения / записи, назначенными для ее корня и вложенных папок.
Таким образом, этот тип доступа к хранилищу файлов выполняется автоматически, и вы должны иметь возможность записывать все, что вам нравится, в папки пользовательских пулов приложений, ничего не меняя. Вот почему были созданы учетные записи виртуальных пользователей для каждого пула приложений.
источник
Я пытался это исправить проблемы с доступом к веб-сайту IIS, который проявлялся примерно так в журналах событий → Windows → Приложение:
В конце концов , я должен был дать Windows ,
Everyone
группа доступа на чтение к этой папке , чтобы заставить его работать правильно.источник