Właśnie przeniosłem się z IIS6 na Win2003 do IIS8 na Win2012 w celu hostowania aplikacji ASP.NET.
W jednym folderze w mojej aplikacji muszę tworzyć i usuwać pliki. Po skopiowaniu plików na nowy serwer, przy próbie usunięcia plików ciągle pojawiały się następujące błędy:
Odmowa dostępu do ścieżki „D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf”.
Kiedy sprawdzam IIS, widzę, że aplikacja działa na koncie DefaultAppPool, jednak nigdy nie konfiguruję uprawnień systemu Windows w tym folderze, aby uwzględnić IIS AppPool \ DefaultAppPool
Zamiast tego, aby przestać krzyczeć klientów, przyznałem następujące uprawnienia do folderu:
IUSR
- Przeczytaj i wykonaj
- Wyświetl zawartość folderu
- Czytać
- pisać
IIS_IUSRS
- Modyfikować
- Przeczytaj i wykonaj
- Wyświetl zawartość folderu
- Czytać
- pisać
Wydaje się, że to zadziałało, ale obawiam się, że ustanowiono zbyt wiele przywilejów. Przeczytałem w Internecie sprzeczne informacje o tym, czy IUSR jest tutaj w ogóle potrzebny. Czy ktoś może wyjaśnić, którzy użytkownicy / uprawnienia wystarczyłyby do tworzenia i usuwania dokumentów w tym folderze? Czy IUSR jest częścią grupy IIS_IUSRS?
Aktualizacja i rozwiązanie
Zobacz moją odpowiedź poniżej . Musiałem to niestety zrobić, ponieważ niektóre ostatnie sugestie nie były dobrze przemyślane, a nawet bezpieczne (IMO).
Odpowiedzi:
Nienawidzę publikować własnej odpowiedzi, ale niektóre odpowiedzi ostatnio zignorowały rozwiązanie, które zamieściłem w swoim własnym pytaniu, sugerując podejścia, które są niczym innym jak szalonym.
Krótko mówiąc - nie musisz w ogóle edytować żadnych uprawnień konta użytkownika Windows . Takie postępowanie tylko stwarza ryzyko. Proces jest w całości zarządzany w usługach IIS przy użyciu odziedziczonych uprawnień.
Stosując zmodyfikować / Zapis do Correct Konta Użytkownika
Kliknij prawym przyciskiem myszy domenę, gdy pojawi się na liście Witryny, i wybierz opcję Edytuj uprawnienia
Na karcie Bezpieczeństwo zobaczysz
MACHINE_NAME\IIS_IUSRS
listę. Oznacza to, że usługi IIS automatycznie mają uprawnienia tylko do odczytu katalogu (np. Do uruchamiania ASP.Net w witrynie). Nie musisz edytować tego wpisu .Kliknij przycisk Edytuj , a następnie Dodaj ...
W polu tekstowym wpisz
IIS AppPool\MyApplicationPoolName
, zastępującMyApplicationPoolName
nazwę swojej domeny lub inną pulą aplikacji uzyskującą dostęp do Twojej witryny, npIIS AppPool\mydomain.com
Naciśnij przycisk Sprawdź nazwy . Wpisany tekst zmieni się (zwróć uwagę na podkreślenie):
Naciśnij OK, aby dodać użytkownika
Po wybraniu nowego użytkownika (Twojej domeny) możesz teraz bezpiecznie nadawać wszelkie uprawnienia do modyfikacji lub zapisu
źródło
IUSR
prac. DodanieIIS AppPool\Cache
(nazwa mojej puli aplikacji) dajeHTTP Error 401.3 - Unauthorized
MyComputerName\IIS_IUSRS
iIUSR
z uprawnieniami Tylko do odczytu, aby znów działał. Dotyczy to tylko katalogów wirtualnych (nie aplikacji .net), ale ktoś może uznać to za przydatne.IIS AppPool\[APPLICATION POOL NAME]
. Spacje w nazwie puli aplikacji są akceptowane. Należy również pamiętać, że ten użytkownik zostanie znaleziony tylko wtedy, gdy jako typ obiektu dla wyszukiwania nazwy zostanie zaznaczona opcja „Wbudowane podmioty zabezpieczeń” (górne pole w oknie dialogowym „Wybierz użytkowników lub grupy”).IUSR jest częścią grupy IIS_IUSER, więc myślę, że możesz usunąć uprawnienia dla IUSR bez obaw. Dalsze czytanie
Jednak z czasem pojawił się problem, ponieważ coraz więcej usług systemu Windows zaczęło działać jako SERWIS SIECIOWY. Dzieje się tak, ponieważ usługi działające jako NETWORKSERVICE mogą modyfikować inne usługi działające pod tą samą tożsamością. Ponieważ procesy robocze usług IIS domyślnie uruchamiają kod innych firm (klasyczne ASP, ASP.NET, kod PHP), nadszedł czas, aby odizolować procesy robocze usług IIS od innych usług systemowych Windows i uruchamiać procesy robocze usług IIS z unikalnymi tożsamościami. System operacyjny Windows udostępnia funkcję o nazwie „Konta wirtualne”, która umożliwia usługom IIS tworzenie unikatowych tożsamości dla każdej z pul aplikacji. DefaultAppPool to domyślna pula przypisana do wszystkich tworzonych puli aplikacji.
Aby zwiększyć bezpieczeństwo, można zmienić tożsamość DefaultAppPool usług IIS na ApplicationPoolIdentity.
Jeśli chodzi o uprawnienia, tworzenie i usuwanie podsumowuje wszystkie prawa, które można nadać. Więc wszystko, co przypisałeś do grupy IIS_USERS, będzie wymagać. Nic dodać nic ująć.
mam nadzieję że to pomoże.
źródło
Kiedy dodałem uprawnienia IIS_IUSRS do folderu witryny - zasoby, takie jak js i css, nadal były niedostępne (błąd 401, zabroniony). Jednak kiedy dodałem IUSR - było ok. Więc na pewno „NIE MOŻESZ usunąć uprawnień dla IUSR bez obaw”, drogi @Travis G @
źródło
IIS AppPool\MyApplicationPoolName
zgodnie z moją zaktualizowaną odpowiedzią. Nie musisz już więcej bawić się z IUSR (S)!@EvilDr Możesz utworzyć konto IUSR_ [identyfikator] w swoim środowisku AD i pozwolić określonej puli aplikacji działać pod tym kontem IUSR_ [identyfikator]:
„Pula aplikacji”> „Ustawienia zaawansowane”> „Tożsamość”> „Konto niestandardowe”
Ustaw swoją witrynę internetową na „Użytkownik aplikacji (uwierzytelnianie przekazywane)”, a nie „Określony użytkownik”, w Ustawieniach zaawansowanych.
Teraz nadaj temu IUSR_ [identyfikator] odpowiednie uprawnienia NTFS do plików i folderów, na przykład: modyfikuj dane firmy.
źródło
Grupa IIS_IUSRS ma znaczenie tylko wtedy, gdy używasz tożsamości ApplicationPool. Mimo że ta grupa wygląda na pustą w czasie wykonywania, usługi IIS dodają ją do tej grupy w celu uruchomienia procesu roboczego zgodnie z literaturą firmy Microsoft.
źródło
Użyłbym konkretnego użytkownika (a NIE użytkownika aplikacji). Następnie włączę podszywanie się w aplikacji. Gdy to zrobisz, niezależnie od konta, które jest ustawione jako określony użytkownik, te poświadczenia będą używane do uzyskiwania dostępu do zasobów lokalnych na tym serwerze (nie w przypadku zasobów zewnętrznych).
Określone ustawienie użytkownika jest przeznaczone specjalnie do uzyskiwania dostępu do zasobów lokalnych.
źródło