Току-що преминах от IIS6 на Win2003 към IIS8 на Win2012 за хостинг на ASP.NET приложения.
В рамките на една конкретна папка в моето приложение трябва да създавам & изтривам файлове. След като копирах файловете на новия сървър, продължавах да виждам следните грешки, когато се опитвах да изтривам файлове:
Достъпът до пътя 'D:\WebSites\myapp.co.uk\companydata\filename.pdf' е отказан.
Когато проверявам IIS, виждам, че приложението се изпълнява под акаунта DefaultAppPool, но никога не съм настройвал разрешенията на Windows за тази папка така, че да включват IIS AppPool\DefaultAppPool
Вместо това, за да спра крещящите клиенти, дадох следните разрешения на папката:
IUSR
IIS_IUSRS
Изглежда, че това работи, но се опасявам, че са зададени твърде много привилегии. Прочетох противоречива информация в интернет за това дали IUSR изобщо е необходим тук. Може ли някой да поясни кои потребители/правомощия биха били достатъчни за създаване и изтриване на документи в тази папка, моля? Също така, IUSR част ли е от групата IIS_IUSRS?
Моля, вижте моя отговор по-долу. За съжаление трябваше да направя това, тъй като някои скорошни предложения не бяха добре обмислени или дори безопасни (IMO).
IUSR е част от групата IIS_IUSER.Така че предполагам, че можете да премахнете разрешенията за IUSR, без да се притеснявате. Допълнително четене
С течение на времето обаче възникна проблем, тъй като все повече системни услуги на Windows започнаха да се изпълняват като NETWORKSERVICE. Това е така, защото услугите, изпълнявани като NETWORKSERVICE, могат да подменят други услуги, които се изпълняват под същата идентичност. Тъй като работните процеси на IIS по подразбиране изпълняват код на трети страни (класически ASP, ASP.NET, PHP код), беше време да изолираме работните процеси на IIS от другите системни услуги на Windows и да изпълняваме работните процеси на IIS под уникални идентичности. Операционната система Windows предоставя функция, наречена "Виртуални акаунти", която позволява на IIS да създава уникални идентичности за всеки от своите пулове от приложения. DefaultAppPool е басейнът по подразбиране, който се присвоява на всички създадени от вас басейни с приложения.
За да го направите по-сигурен, можете да промените идентичността на IIS DefaultAppPool на ApplicationPoolIdentity.
Що се отнася до разрешенията, Create (Създаване) и Delete (Изтриване), те обобщават всички права, които могат да бъдат дадени. Така че всичко, което сте задали на групата IIS_USERS, е това, което те ще изискват. Нищо повече, нищо по-малко.
Надявам се това да помогне.
@EvilDr Можете да създадете акаунт IUSR[идентификатор] във вашата AD среда и да позволите на конкретния пул от приложения да работи под този акаунт IUSR[идентификатор]:
"Application pool" > "Advanced Settings" > "Identity" > "Custom account"
Задайте на уебсайта си "Applicaton user (pass-through authentication)", а не "Specific user", в Advanced Settings (Разширени настройки).
Сега дайте на този IUSR_[идентификатор] съответните NTFS разрешения за файлове и папки, например: modify on companydata.
Бих използвал конкретен потребител (а не потребител на приложение). След това ще разреша олицетворяването в приложението. След като направите това, какъвто и акаунт да е зададен като конкретен потребител, тези данни ще се използват за достъп до локални ресурси на този сървър (не за външни ресурси).
Настройката за конкретен потребител е предназначена специално за достъп до локални ресурси.