Ok. Tutaj próbujemy skonfigurować klasyczną stronę internetową ASP w IIS 7.5 w systemie Windows Server 2008 R2. W katalogu głównym witryny znajduje się folder o nazwie dbc, który zawiera plik służący do odczytu i zapisu niektórych informacji podczas przetwarzania każdej strony.
Problem polega na tym, że jeśli udzielę uprawnień do zapisu IUSR i uprawnień do zapisu IIS_IUSRS lub uprawnień do zapisu DefaultAppPool, otrzymam „Dostęp do ścieżki„ E: .. \ websiteroot \ dbc \ nazwa_pliku.txt ”jest zabroniony”
Ale jeśli udzielę WSZYSTKIMU dostępu do zapisu w tym folderze dbc, nie otrzymam żadnego błędu, wszystko wydaje się idealne.
Więcej informacji: Witryna działa w trybie klasycznego potoku, uwierzytelnianie anonimowe jest włączone (być może jest to jedyne uwierzytelnianie włączone). Próbowałem uwierzytelniania anonimowego przy użyciu konta IUSR oraz tożsamości puli aplikacji. W moim przypadku ApplicationPoolIdentity to tożsamość służąca do uwierzytelnienia witryny. Używamy COM + dla plików I / O. I Classic ASP Server.CreateObject, aby utworzyć z niego obiekt. COM + działa jako usługa sieciowa.
Myśli? Nie chcę udzielać uprawnień do zapisu KAŻDEMU. Czy coś brakuje?
ROZWIĄZANE: Oto co zrobiłem.
Moja strona internetowa o nazwie CipherDemo działała pod AppPoolIdentity w IIS 7.5, która mogła być zlokalizowana przez Appity Tożsamość IIS AppPool \ CipherDemo. Użyłem ICACLS, aby dać RW uprawnienia do tego folderu.
a COM +, który faktycznie wykonywał plik I / O, działał pod tożsamością usługi sieciowej. Kiedy korzystałem z Monitora procesów do śledzenia błędu odmowy dostępu, okazało się, że usługa sieciowa ma tylko uprawnienie do odczytu w tym folderze.
Użyłem ICACLS „nazwa folderu” / grant: r „NT AUTHORITY \ NETWORKSERVICE” :( OI) (CI) RXW / T, aby przyznać dostęp do zapisu w tym folderze.
I rozwiązałem to.
Miałem zamiar, ponieważ ponieważ witryna działa jako CipherDemo Identity, będzie to konto, które zostanie wykorzystane do uzyskania dostępu do pliku za pośrednictwem COM +. Jednak żenujące jest to, że COM + nadal działałby na własnych granicach tożsamości.
źródło
Możesz dodać konto poprzez GUI NTFS, wpisując je bezpośrednio. Nazwa ma format
IIS APPPOOL\<<app pool name>>
npIIS APPPOOL\DefaultAppPool
. (zobacz ten artykuł pomocy technicznej Microsoft )Alternatywne rozwiązanie: korzystałem z konta „Usługa sieciowa” jako użytkownik puli aplikacji, który przyznał mu uprawnienia do zapisu.
źródło
Jeśli chcesz tylko przyznać uprawnienia do zapisu do folderu określonemu użytkownikowi, powinieneś również zmienić „Anonimową tożsamość użytkownika” witryny na „Określonego użytkownika”, a nie „Tożsamość puli aplikacji”.
źródło