Dlaczego po dodaniu dostępu IIS_IUSRS RW do folderu nie pozwala on automatycznie na dostęp do ISUR RW?

11

Używam IIS7 (Windows Server 2008 x64) i mam konfigurację strony internetowej przy użyciu anonimowego uwierzytelnienia. Tożsamość użytkownika anon jest skonfigurowana jako IUSR. Aplikacja zapisuje pliki do folderu, a ja daję uprawnienia RW grupy IIS_IUSRS do tego folderu. To nie działa Muszę wyraźnie przyznać uprawnienia IUSR RW, aby umożliwić aplikacji zapisywanie w folderze.

Rozumiem, że tożsamość puli aplikacji jest automatycznie dodawana do grupy IIS_IUSRS. Zakładałem, że IUSR (lub dowolna anonimowa tożsamość użytkownika) również był dorozumianym członkiem grupy IIS_IUSRS. Nie wydaje się, że tak jest.

Podczas rozwiązywania problemów korzystam z Monitora procesów, aby wyświetlić dostęp do folderu i ustaliłem, że Usługa sieciowa (tożsamość puli aplikacji) podszywa się pod IUSR (tego się spodziewałem), ale udzielenie uprawnień RW grupie IIS_IUSRS nie pozwoliło IUSR na dostęp Odmowa dostępu do pliku).

Czy ktoś może wyjaśnić, czy IUSR jest członkiem grupy IIS_IUSRS?

Przejrzałem następującą dokumentację i nie znalazłem solidnej odpowiedzi:

Zrozumienie wbudowanych kont użytkowników i grup w IIS 7

Tożsamości puli aplikacji

Izzy
źródło

Odpowiedzi:

14

Jest tak, ponieważ są to dwie różne rzeczy. IIS_IUSRS to grupa kont procesów roboczych IIS . Oznacza to tożsamość, pod którą działa sama pula aplikacji. IUSR to anonimowa tożsamość użytkownika. Oznacza to tożsamość, którą IIS uważa za użytkownika uzyskującego dostęp do witryny.

Teraz, chociaż tego nie powiedziałeś, niech zgadnę - ta aplikacja jest klasycznym boleniem? (W przeciwnym razie, jeśli jest to .Net, musisz używać personifikacji). Tak czy inaczej, dostęp do zasobów uzyskuje się jako personifikacja tożsamości, czyli anonimowy użytkownik w twoim przypadku, czyli IUSR. Dlatego musisz mu to przyznać. Jeśli w .Net wyłączysz personifikację, przekonasz się, że IIS_IUSRS wejdzie do gry zgodnie z oczekiwaniami. W klasycznej ASP (i dla plików statycznych) nie masz wyboru, personifikacja jest zawsze „włączona”; więc zawsze używana jest tożsamość użytkownika, a nie tożsamość puli. Ponieważ zatem IIS_IUSRS dotyczy tożsamości puli, nie ma go w grze.


Edytuj po dodaniu przez OP dodatkowych informacji:

Łatwo jest pomylić IUSR i IIS_IUSRS ze względu na ich nazwy. Aby zobaczyć, że się różnią, należy pamiętać, że IIS_IUSRS zastępuje IIS_WPG w IIS6, którym była Worker Process Group. Do tych grup dodajesz konta, na których chcesz uruchamiać swoje pule, a nie tożsamości, anon przywileje powinny być bardziej ograniczone. na przykład. czasami możesz chcieć użyć konta domeny do uruchomienia puli dla delegacji Kerberos do innych zasobów sieciowych. Następnie dodasz to konto usługi do tej grupy.

Gdy personifikacja jest włączona, pula / proces udaje użytkownika, ponieważ tak mu kazano. W przypadku anon auth (twój przypadek) tym użytkownikiem jest IUSR. W przypadku uwierzytelniania systemu Windows byłaby to tożsamość użytkownika Windows \ domain. Z tego powodu podskakuje wydajność podszywania się, ponieważ proces musi przełączyć się na inną tożsamość w celu uzyskania dostępu do zasobów.

Jeśli korzystasz z .NET i anonimowego uwierzytelniania, nie rozumiem, dlaczego włączysz personifikację. W przypadku, gdy nie używasz personifikacji lub nie potrzebujesz jej podszywania się, powinieneś być świadomy pewnych sztuczek w przypadku IIS7: możesz sprawić, że IUSR zniknie całkowicie i skończysz wszystkie zamieszanie. Myślę, że ci się spodoba, i to też jest moja preferowana metoda. Wszystko, co musisz zrobić, to powiedzieć mu, aby używał tożsamości puli jako tożsamości anonimowej .

Po tym będziesz miał do czynienia tylko z grupą IIS_IUSRS. Ale nie daj się zwieść, to wciąż nie oznacza, że ​​te dwa są takie same! Możliwe, że tożsamość procesu zastąpi IUSR, ale nie na odwrót!

Więcej sztuczek IIS7, o których należy pamiętać: jeśli spojrzysz na IIS_IUSRS, może być pusty. Dzieje się tak, ponieważ Twoje tożsamości puli wirtualnej są automatycznie dodawane do niej podczas uruchamiania puli, więc nie musisz się o to martwić.

Ta tabela powinna pomóc lepiej wyjaśnić, w jaki sposób określa się tożsamość wykonania wątku:

Personifikacja Anonimowy dostęp do zasobów Dostęp jako

Enabled Enabled IUSR_computer w IIS5 / 6 lub,
                                       IUSR w IIS7 lub
                                       Jeśli zmieniłeś konto użytkownika anon 
                                       w IIS, cokolwiek tam ustawisz
Włączone Wyłączone MYDOM \ MyName
Wyłączone Włączone NT Urząd \ Usługa sieciowa (tożsamość puli)
Wyłączone Wyłączone NT NT \ Usługa sieciowa (tożsamość puli)

Amit Naidu
źródło
Zdecydowanie używamy .Net (3.5 ukierunkowany), ale może to być personifikacja. Będę musiał sprawdzić u moich programistów, aby się upewnić. Moje zamieszanie wynika z faktu, że założyłem (jak się wydaje błędnie), że anonimowa tożsamość użytkownika była automatycznie członkiem grupy IIS_IUSRS. Ponieważ nie pozwala mi to wyjaśnić i popraw mnie, jeśli się martwię.
1) Korzystając z klasycznej ASP, uprawnienia dostępu do plików wykorzystują anonimową tożsamość użytkownika. W IIS 7 lub nowszym ten użytkownik domyślnie nie jest członkiem grupy IIS_IUSRS. 2) Korzystając z ASP.Net, uprawnienia dostępu do plików używają anonimowej tożsamości użytkownika, jeśli personifikacja jest włączona. W IIS 7 lub nowszym ten użytkownik domyślnie nie jest członkiem grupy IIS_IUSRS. 3) Korzystając z ASP.Net, uprawnienia dostępu do plików używają tożsamości procesu roboczego, jeśli personifikacja jest wyłączona. W IIS 7 lub nowszym ten użytkownik jest domyślnie członkiem grupy IIS_IUSRS.
Tak, absolutnie poprawne we wszystkich punktach! Aby być całkowicie jasnym, w punktach 1 i 2 powinieneś dodać „jeśli włączone jest IIS anon auth”, czego nie musiałem wcześniej uwzględniać, ponieważ już powiedziałeś, że używasz anona. Zobacz tabelę, którą dodałem, aby lepiej to wyjaśnić.
Amit Naidu
Dziękuję bardzo za wyjaśnienie tego. Zgadza się z tym, co znalazłem metodą prób i błędów, ale nigdzie tego nie widziałem. Jest to bardzo ważne dla administratorów, którzy zatrudniają LUA na swoich serwerach podczas konfigurowania aplikacji IIS, które wymagają pozwolenia na zapis.