Ось проблема з 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 працює як цей користувач, тож що дозволяє цьому користувачу писати в папку, до якої, схоже, немає явного доступу?
Зауважте, що я розумію, що це, мабуть, було зроблено задля зручності, оскільки було б дозволити користувачеві отримати доступ до кожної папки, в яку він повинен записатись, якщо ви працюєте в Повному довірі. Якщо ви хочете обмежити цей доступ, ви завжди можете запустити додаток у програмі Medium Trust. Мені цікаво дізнатись про те, як операційна система та / або IIS дозволяє проводити ці записи, навіть не маючи явного доступу до файлової системи.