Oto problem z usługami IIS 7.5 i ASP.NET, który badałem i do czego nie docierałem. Każda pomoc byłaby bardzo mile widziana.
Moje pytanie brzmi: używając programu ASP.NET w IIS 7.5, w jaki sposób IIS i / lub system operacyjny pozwalają aplikacji internetowej pisać w folderze, na przykład w C:\dump
trybie pełnego zaufania? W jaki sposób nie muszę jawnie dodawać uprawnień do zapisu dla użytkownika puli aplikacji (w tym przypadku ApplicationPoolIdentity
)?
Tyle wiem:
- W IIS 7.5 domyślną tożsamością dla puli aplikacji jest
ApplicationPoolIdentity
. ApplicationPoolIdentity
reprezentuje konto użytkownika systemu Windows o nazwie „IIS APPPOOL \ AppPoolName”, które jest tworzone podczas tworzenia puli aplikacji, gdzie AppPoolName jest nazwą puli aplikacji.- Użytkownik „IIS APPPOOL \ AppPoolName” jest domyślnie członkiem
IIS_IUSRS
grupy. - Jeśli są uruchomione w pełnym zaufaniem, aplikacja internetowa może napisać do wielu obszarach systemu plików (z wyłączeniem foldery podoba
C:\Users
,C:\Windows
itp). Na przykład, aplikacja będzie miała dostęp do zapisu niektórych folderów, jak,C:\dump
. - Domyślnie
IIS_IUSRS
grupa nie ma dostępu do odczytu ani zapisuC:\dump
(przynajmniej brak dostępu, który jest widoczny na karcie „Bezpieczeństwo” w Eksploratorze Windows). - Jeśli odmówisz dostępu do zapisu
IIS_IUSRS
, otrzymasz SecurityException podczas próby zapisu do folderu (zgodnie z oczekiwaniami).
Biorąc to wszystko pod uwagę, w jaki sposób przyznaje się dostęp do zapisu użytkownikowi „IIS APPPOOL \ AppPoolName”? Proces w3wp.exe działa jako ten użytkownik, więc co pozwala temu użytkownikowi pisać do folderu, do którego nie wydaje się mieć wyraźnego dostępu?
Należy pamiętać, że rozumiem, że prawdopodobnie zostało to zrobione ze względu na wygodę, ponieważ trudno byłoby udzielić użytkownikowi dostępu do każdego folderu, do którego należy pisać, jeśli działa się w trybie pełnego zaufania. Jeśli chcesz ograniczyć ten dostęp, zawsze możesz uruchomić aplikację w obszarze Średniego zaufania. Chcę dowiedzieć się, w jaki sposób system operacyjny i / lub IIS zezwalają na te zapisy, nawet jeśli wydaje się, że nie przyznano dostępu do jawnego systemu plików.
Kliknij folder prawym przyciskiem myszy.
Kliknij Właściwości
Kliknij kartę Zabezpieczenia. Zobaczysz coś takiego:
Zaznacz / odznacz dostęp, którego potrzebujesz, aby udzielić konta
Kliknij przycisk Zastosuj, a następnie OK.
źródło
Każda pula aplikacji w IIs tworzy własny bezpieczny folder użytkownika z domyślnie PEŁNYM zezwoleniem na odczyt / zapis w katalogu c: \ users. Otwórz folder Użytkownicy i zobacz, jakie są foldery puli aplikacji, kliknij prawym przyciskiem myszy i sprawdź ich prawa do przypisanego konta wirtualnego puli aplikacji. Powinieneś zobaczyć swoje konto w puli aplikacji już dodane z dostępem do odczytu / zapisu przypisanym do jego katalogu głównego i podfolderów.
Ten rodzaj dostępu do przechowywania plików jest wykonywany automatycznie i powinieneś być w stanie pisać w folderach kont użytkowników bez względu na to, co chcesz. Właśnie dlatego utworzono wirtualne konta użytkowników dla każdej puli aplikacji.
źródło
Próbowałem to naprawić problemy z dostępem do strony internetowej IIS, które objawiły się następująco w dziennikach zdarzeń → Windows → Aplikacja:
W końcu musiałem dać
Everyone
grupie Windows dostęp do odczytu do tego folderu , aby działał poprawnie.źródło