Ich bin gerade von IIS6 unter Win2003 zu IIS8 unter Win2012 gewechselt, um ASP.NET-Anwendungen zu hosten.
Innerhalb eines bestimmten Ordners in meiner Anwendung muss ich Dateien erstellen und löschen. Nach dem Kopieren der Dateien auf den neuen Server wurden beim Versuch, Dateien zu löschen, immer wieder die folgenden Fehler angezeigt:
Der Zugriff auf den Pfad 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' wird verweigert.
Wenn ich IIS überprüfe, sehe ich, dass die Anwendung unter dem DefaultAppPool-Konto ausgeführt wird. Ich habe jedoch niemals Windows-Berechtigungen für diesen Ordner so eingerichtet, dass sie IIS AppPool \ DefaultAppPool enthalten
Um keine Kunden mehr zu schreien, habe ich stattdessen die folgenden Berechtigungen für den Ordner erteilt:
IUSR
- Lesen & Ausführen
- Ordnerinhalt auflisten
- Lesen
- Schreiben
IIS_IUSRS
- Ändern
- Lesen & Ausführen
- Ordnerinhalt auflisten
- Lesen
- Schreiben
Dies scheint funktioniert zu haben, aber ich bin besorgt, dass zu viele Berechtigungen festgelegt wurden. Ich habe hier widersprüchliche Informationen darüber gelesen, ob IUSR überhaupt benötigt wird. Kann jemand klären, welche Benutzer / Berechtigungen ausreichen würden, um Dokumente in diesem Ordner zu erstellen und zu löschen? Ist IUSR auch Teil der Gruppe IIS_IUSRS?
Update & Lösung
Bitte sehen Sie meine Antwort unten . Ich musste dies leider tun, da einige aktuelle Vorschläge nicht gut durchdacht oder sogar sicher waren (IMO).
Antworten:
Ich hasse es, meine eigene Antwort zu veröffentlichen, aber einige Antworten haben kürzlich die Lösung, die ich in meiner eigenen Frage gepostet habe, ignoriert und Ansätze vorgeschlagen, die geradezu tollkühn sind.
Kurz gesagt: Sie müssen überhaupt keine Windows-Benutzerkontenberechtigungen bearbeiten . Dies birgt nur Risiken. Der Prozess wird vollständig in IIS mit geerbten Berechtigungen verwaltet.
Anwenden von Änderungs- / Schreibberechtigungen auf das richtige Benutzerkonto
Klicken Sie mit der rechten Maustaste auf die Domain, wenn sie in der Liste Sites angezeigt wird, und wählen Sie Berechtigungen bearbeiten
Auf der Registerkarte Sicherheit wird angezeigt
MACHINE_NAME\IIS_IUSRS
. Dies bedeutet, dass IIS automatisch über schreibgeschützte Berechtigungen für das Verzeichnis verfügt (z. B. zum Ausführen von ASP.Net auf der Site). Sie müssen diesen Eintrag nicht bearbeiten .Klicken Sie auf die Schaltfläche Bearbeiten und dann auf Hinzufügen ...
Geben Sie in das Textfeld ein
IIS AppPool\MyApplicationPoolName
und ersetzen Sie esMyApplicationPoolName
durch Ihren Domainnamen oder den Anwendungspool, der auf Ihre Site zugreift, zIIS AppPool\mydomain.com
Klicken Sie auf die Schaltfläche Namen prüfen. Der eingegebene Text wird transformiert (beachten Sie die Unterstreichung):
Drücken Sie OK , um den Benutzer hinzuzufügen
Mit dem neuen Benutzer (Ihre Domäne) ausgewählt, jetzt können Sie sicher alle bieten Ändern oder Schreibberechtigungen
quelle
IUSR
Werke hinzufügen . HinzufügenIIS AppPool\Cache
(der Name meines Anwendungspools) ergibtHTTP Error 401.3 - Unauthorized
MyComputerName\IIS_IUSRS
und hatteIUSR
nur Leseberechtigungen, damit es wieder funktioniert. Dies ist nur für virtuelle Verzeichnisse (nicht für .net-Apps) gedacht, aber es könnte hilfreich sein.IIS AppPool\[APPLICATION POOL NAME]
. Leerzeichen im Namen des Anwendungspools werden akzeptiert. Bitte beachten Sie auch, dass dieser Benutzer nur gefunden wird, wenn "Integrierte Sicherheitsprinzipale" als Objekttyp für die Namenssuche aktiviert ist (oberes Feld im Dialogfeld "Benutzer oder Gruppen auswählen").IUSR ist Teil der IIS_IUSER-Gruppe. Ich denke, Sie können die Berechtigungen für IUSR ohne Bedenken entfernen. Weiterführende Literatur
Im Laufe der Zeit trat jedoch ein Problem auf, da immer mehr Windows-Systemdienste als NETWORKSERVICE ausgeführt wurden. Dies liegt daran, dass Dienste, die als NETWORKSERVICE ausgeführt werden, andere Dienste manipulieren können, die unter derselben Identität ausgeführt werden. Da IIS-Arbeitsprozesse standardmäßig Code von Drittanbietern ausführen (klassischer ASP, ASP.NET, PHP-Code), war es an der Zeit, IIS-Arbeitsprozesse von anderen Windows-Systemdiensten zu isolieren und IIS-Arbeitsprozesse unter eindeutigen Identitäten auszuführen. Das Windows-Betriebssystem bietet eine Funktion namens "Virtuelle Konten", mit der IIS eindeutige Identitäten für jeden seiner Anwendungspools erstellen kann. DefaultAppPool ist der Standardpool, der allen von Ihnen erstellten Anwendungspools zugewiesen ist.
Um die Sicherheit zu erhöhen, können Sie die IIS DefaultAppPool-Identität in ApplicationPoolIdentity ändern.
In Bezug auf die Berechtigung fasst Erstellen und Löschen alle Rechte zusammen, die erteilt werden können. Was auch immer Sie der Gruppe IIS_USERS zugewiesen haben, es ist erforderlich. Nicht mehr, nicht weniger.
hoffe das hilft.
quelle
Als ich dem Site-Ordner die Berechtigung IIS_IUSRS hinzufügte, war auf Ressourcen wie js und css immer noch nicht zugegriffen (Fehler 401, verboten). Als ich jedoch IUSR hinzufügte, wurde es in Ordnung. Also sicher "Sie können die Berechtigungen für IUSR NICHT ohne Bedenken entfernen", lieber @Travis G @
quelle
IIS AppPool\MyApplicationPoolName
gemäß meiner aktualisierten Antwort zu verwenden. Sie müssen nicht mehr mit IUSR (S) herumspielen!@EvilDr Sie können ein IUSR_-Konto (Bezeichner) in Ihrer AD-Umgebung erstellen und den jeweiligen Anwendungspool unter diesem IUSR-Konto ausführen lassen:
"Anwendungspool"> "Erweiterte Einstellungen"> "Identität"> "Benutzerdefiniertes Konto"
Stellen Sie Ihre Website in den erweiterten Einstellungen auf "Anwendungsbenutzer (Pass-Through-Authentifizierung)" und nicht auf "Bestimmter Benutzer" ein.
Geben Sie diesem IUSR_ [Bezeichner] nun die entsprechenden NTFS-Berechtigungen für Dateien und Ordner, z. B.: Ändern Sie die Unternehmensdaten.
quelle
Die IIS_IUSRS-Gruppe ist nur dann von Bedeutung, wenn Sie ApplicationPool Identity verwenden. Obwohl diese Gruppe zur Laufzeit leer aussieht, fügt IIS dieser Gruppe hinzu, um einen Arbeitsprozess gemäß Microsoft-Literatur auszuführen.
quelle
Ich würde einen bestimmten Benutzer (und NICHT einen Anwendungsbenutzer) verwenden. Dann werde ich den Identitätswechsel in der Anwendung aktivieren. Sobald Sie dies tun, unabhängig davon, welches Konto als bestimmter Benutzer festgelegt ist, werden diese Anmeldeinformationen verwendet, um auf lokale Ressourcen auf diesem Server zuzugreifen (nicht für externe Ressourcen).
Die spezifische Benutzereinstellung ist speziell für den Zugriff auf lokale Ressourcen vorgesehen.
quelle