Wie kommt es, dass beim Hinzufügen eines IIS_IUSRS-RW-Zugriffs zu einem Ordner der ISUR-RW-Zugriff nicht automatisch zugelassen wird?

11

Ich verwende IIS7 (Windows Server 2008 x64) und habe eine Website mit anonymer Authentifizierung eingerichtet. Die anon-Benutzeridentität ist als IUSR konfiguriert. Die Anwendung schreibt Dateien in einen Ordner und ich erteile dem Ordner die RW-Berechtigungen der Gruppe IIS_IUSRS. Das funktioniert nicht. Ich muss explizit IUSR RW-Perms geben, damit die Anwendung in den Ordner schreiben kann.

Nach meinem Verständnis wird die Identität des Anwendungspools automatisch zur Gruppe IIS_IUSRS hinzugefügt. Ich nahm an, dass IUSR (oder eine anonyme Benutzeridentität) auch ein implizites Mitglied der Gruppe IIS_IUSRS war. Es scheint nicht, dass dies der Fall ist.

Während der Fehlerbehebung verwende ich den Prozessmonitor, um den Zugriff auf den Ordner anzuzeigen, und stelle fest, dass der Netzwerkdienst (die Identität des Anwendungspools) sich als IUSR ausgibt (dies ist das, was ich erwartet habe), aber die IIS_IUSRS-Gruppe mit RW-Berechtigungen versehen wurde, erlaubte IUSR nicht, auf den Ordner zuzugreifen Dateizugriff verweigert).

Kann jemand erklären, ob IUSR Mitglied der IIS_IUSRS-Gruppe ist oder nicht?

Ich habe die folgende Dokumentation überprüft und keine eindeutige Antwort gefunden:

Grundlegendes zu integrierten Benutzer- und Gruppenkonten in IIS 7

Anwendungspoolidentitäten

Izzy
quelle

Antworten:

14

Das liegt daran, dass dies zwei verschiedene Dinge sind. IIS_IUSRS ist die Gruppe für IIS-Worker-Prozesskonten . Dies bedeutet die Identität, unter der der Anwendungspool selbst ausgeführt wird. IUSR ist die anonyme Benutzeridentität. Dies bedeutet die Identität, von der IIS glaubt, dass sie der Benutzer ist, der auf die Site zugreift.

Nun, obwohl Sie es nicht gesagt haben, lassen Sie mich raten - diese App ist klassisch asp? (Andernfalls, wenn es sich um .Net handelt, müssen Sie den Identitätswechsel verwenden.) In beiden Fällen wird auf Ressourcen als Identitätswechsel zugegriffen, dh als anonymer Benutzer in Ihrem Fall, dh IUSR. Deshalb müssen Sie ihm die Rechte gewähren. Wenn Sie in .Net den Identitätswechsel deaktivieren, werden Sie feststellen, dass IIS_IUSRS wie erwartet ins Spiel kommt. In Classic ASP (und für statische Dateien) haben Sie keine Wahl, der Identitätswechsel ist immer "aktiviert". Es wird also immer die Benutzeridentität verwendet, nicht die Poolidentität. Da IIS_IUSRS für Poolidentitäten vorgesehen ist, ist es nicht im Spiel.


Nach OP bearbeiten Weitere Informationen hinzugefügt:

Es ist leicht, IUSR und IIS_IUSRS aufgrund ihrer Namen zu verwechseln. Um festzustellen, ob sie unterschiedlich sind, müssen Sie sich daran erinnern, dass IIS_IUSRS ein Ersatz für IIS_WPG in IIS6 ist, der Worker Process Group. Zu diesen Gruppen fügen Sie Konten hinzu, unter denen Sie Ihre Pools ausführen möchten, nicht Anon-Identitäten. Anon-Berechtigungen sollten eingeschränkter sein. z.B. Manchmal möchten Sie möglicherweise ein Domänenkonto verwenden, um den Pool für die Kerberos-Delegierung an andere Netzwerkressourcen auszuführen. Dann würden Sie dieses Dienstkonto dieser Gruppe hinzufügen.

Wenn der Identitätswechsel aktiviert ist, gibt der Pool / Prozess vor, der Benutzer zu sein, weil er dazu aufgefordert wurde. Im Fall von anon auth (Ihrem Fall) ist dieser Benutzer IUSR. Bei der Windows-Authentifizierung handelt es sich um die Windows \ Domain-Identität des Benutzers. Dies ist auch der Grund, warum Sie beim Identitätswechsel einen Leistungseinbruch erzielen, da der Prozess für den Ressourcenzugriff auf eine andere Identität wechseln muss.

Wenn Sie .NET und anonyme Authentifizierung verwenden, verstehe ich nicht, warum Sie den Identitätswechsel aktivieren würden. Wenn Sie keinen Identitätswechsel verwenden oder nicht benötigen, sollten Sie sich bei IIS7 weiterer Tricks bewusst sein: Sie können Ihren IUSR vollständig verschwinden lassen und jegliche Verwirrung beenden. Ich denke, das würde dir gefallen, und es ist auch meine bevorzugte Methode. Sie müssen lediglich angeben, dass die Poolidentität als anonyme Identität wiederverwendet werden soll .

Danach müssen Sie sich nur noch mit der Gruppe IIS_IUSRS befassen. Aber nicht verwirren, das heißt immer noch nicht, dass diese beiden gleich sind! Es kann möglich sein, dass die Prozessidentität IUSR ersetzt, aber nicht umgekehrt!

Weitere IIS7-Tricks, die Sie beachten sollten: Wenn Sie sich IIS_IUSRS ansehen, ist es möglicherweise leer. Dies liegt daran, dass Ihre virtuellen Poolidentitäten beim Start des Pools automatisch hinzugefügt werden, sodass Sie sich über diese Dinge keine Gedanken machen müssen.

Diese Tabelle soll helfen, besser zu verdeutlichen, wie die Thread-Ausführungsidentität bestimmt wird:

Identitätswechsel Anonymer Zugriff Ressourcen, auf die zugegriffen wird

Aktiviert Aktiviert IUSR_computer in IIS5 / 6 oder,
                                       IUSR in IIS7 oder,
                                       Wenn Sie das anon-Benutzerkonto geändert haben 
                                       in IIS, was auch immer Sie dort einstellen
Aktiviert Deaktiviert MYDOM \ MyName
Deaktiviert Aktiviert NT Authority \ Network Service (Poolidentität)
Deaktiviert Deaktiviert NT Authority \ Network Service (Poolidentität)

Amit Naidu
quelle
Wir verwenden definitiv .Net (3.5 als Ziel), aber möglicherweise wird der Identitätswechsel verwendet. Ich muss mich bei meinen Entwicklern erkundigen, um sicherzugehen. Meine Verwirrung rührt von der Tatsache her, dass ich angenommen habe (fälschlicherweise), dass die anonyme Benutzeridentität automatisch Mitglied der Gruppe IIS_IUSRS war. Da er es mir dann nicht erlaubt, mich zu klären und bitte zu korrigieren, wenn ich abgenutzt bin.
1) Bei Verwendung von klassischem ASP verwenden Dateizugriffsberechtigungen die anonyme Benutzeridentität. In IIS 7 oder höher ist dieser Benutzer standardmäßig kein Mitglied der Gruppe IIS_IUSRS. 2) Bei Verwendung von ASP.Net verwenden Dateizugriffsberechtigungen die anonyme Benutzeridentität, wenn der Identitätswechsel aktiviert ist. In IIS 7 oder höher ist dieser Benutzer standardmäßig kein Mitglied der Gruppe IIS_IUSRS. 3) Bei Verwendung von ASP.Net verwenden Dateizugriffsberechtigungen die Arbeitsprozessidentität, wenn der Identitätswechsel deaktiviert ist. In IIS 7 oder höher ist dieser Benutzer standardmäßig immer Mitglied der Gruppe IIS_IUSRS.
Ja absolut korrekt in allen Punkten! Um ganz klar zu sein, sollten Sie in # 1 und # 2 "wenn IIS anon auth aktiviert ist" hinzufügen, was ich vorher nicht einschließen musste, da Sie bereits gesagt haben, dass Sie anon verwenden. Siehe die Tabelle, die ich hinzugefügt habe, um dies besser zu erklären.
Amit Naidu
Vielen Dank für die Klarstellung. Es stimmt mit dem überein, was ich durch Ausprobieren gefunden habe, aber ich habe dies nirgendwo sehr deutlich dokumentiert gesehen. Es ist wichtig für Administratoren, die LUA auf ihren Servern einsetzen, wenn sie IIS-Anwendungen einrichten, die eine Schreibberechtigung benötigen.