Ką tik perėjau nuo IIS6 Win2003 prie IIS8 Win2012, skirtos ASP.NET programoms talpinti.
Viename konkrečiame mano programos aplanke man reikia sukurti ir ištrinti failus. Nukopijavus failus į naująjį serverį, bandant ištrinti failus vis pasirodo šios klaidos:
Prieiga prie kelio 'D:\WebSites\myapp.co.uk\companydata\filename.pdf' yra uždrausta.
Kai patikrinu IIS, matau, kad programa veikia su DefaultAppPool paskyra, tačiau niekada nenustatinėjau Windows teisių šiame aplanke taip, kad būtų IIS AppPool\DefaultAppPool.
Vietoj to, kad nustočiau šaukti klientus, aplankui suteikiau šias teises:
IUSR
IIS_IUSRS
Atrodo, kad tai pavyko, bet man neramu, kad nustatyta per daug privilegijų. Internete skaičiau prieštaringą informaciją apie tai, ar čia iš tikrųjų reikia IUSR. Ar kas nors galėtų paaiškinti, kokių naudotojų ir (arba) įgaliojimų pakaktų norint kurti ir trinti dokumentus šiame aplanke? Be to, ar IUSR yra IIS_IUSRS grupės dalis?
Žr. mano atsakymą toliau. Deja, turėjau tai padaryti, nes kai kurie neseniai pateikti pasiūlymai nebuvo gerai apgalvoti ar net saugūs (IMO).
IUSR yra IIS_IUSER grupės dalis.Taigi, manau, kad galite pašalinti IUSR teises nesijaudindami. Tolesnis skaitymas
Tačiau laikui bėgant iškilo problema, nes vis daugiau "Windows" sistemos paslaugų pradėta vykdyti kaip NETWORKSERVICE. Taip atsitiko todėl, kad paslaugos, veikiančios kaip NETWORKSERVICE, gali pažeisti kitas paslaugas, kurios veikia su ta pačia tapatybe. Kadangi IIS darbiniai procesai pagal nutylėjimą paleidžia trečiųjų šalių kodą (klasikinį ASP, ASP.NET, PHP kodą), atėjo laikas atskirti IIS darbinius procesus nuo kitų "Windows" sistemos paslaugų ir paleisti IIS darbinius procesus su unikaliomis tapatybėmis. "Windows" operacinėje sistemoje yra funkcija, vadinama "Virtualios paskyros", kuri leidžia IIS sukurti unikalias tapatybes kiekvienam jos taikomųjų programų baseinui. DefaultAppPool (numatytasisAppPool) - tai pagal nutylėjimą sukurtas baseinas, kuris priskiriamas visiems jūsų sukurtiems Application Pool (taikomųjų programų baseinams).
Kad būtų saugiau, galite pakeisti IIS DefaultAppPool tapatybę į ApplicationPoolIdentity.
Kalbant apie leidimus, Create (kurti) ir Delete (trinti), apibendrinamos visos teisės, kurias galima suteikti. Taigi viskas, ką priskyrėte IIS_USERS grupei, yra tai, ko jie reikalaus. Nieko daugiau ir nieko mažiau.
Tikiuosi, kad tai padės.
@EvilDr AD aplinkoje galite sukurti IUSR[identifikatorius] paskyrą ir leisti tam tikram taikomųjų programų fondui veikti su šia IUSR[identifikatorius] paskyra:
"Application pool" > "Advanced Settings" > "Identity" > "Custom account"
Išplėstiniuose nustatymuose (Advanced Settings) nustatykite "Applicaton user (pass-through authentication)", o ne "Specific user".
Dabar suteikite tam IUSR_[identifikatorius] atitinkamas NTFS teises į failus ir aplankus, pavyzdžiui: modify on companydata.
Aš naudočiau konkretų naudotoją (o ne programos naudotoją). Tuomet įjungsiu įteikimą taikomojoje programoje. Kai tai padarysite, kad ir kokia paskyra būtų nustatyta kaip konkretus naudotojas, šie įgaliojimai bus naudojami prieigai prie vietinių išteklių tame serveryje (ne išoriniams ištekliams).
Konkretaus naudotojo nustatymas skirtas būtent prieigai prie vietinių išteklių.