web-dev-qa-db-fra.com

Autorisations IIS_IUSRS et IUSR dans IIS8

Je viens de quitter IIS6 sous Win2003 pour IIS8 sous Win2012 pour l'hébergement d'applications ASP.NET.

Dans un dossier particulier de mon application, je dois créer et supprimer des fichiers. Après avoir copié les fichiers sur le nouveau serveur, les erreurs suivantes persistaient lorsque je tentais de supprimer des fichiers:

L'accès au chemin d'accès 'D:\WebSites\myapp.co.uk\companydata\filename.pdf' est refusé.

Lorsque je vérifie IIS, je constate que l'application est exécutée sous le compte DefaultAppPool. Toutefois, je ne configure jamais d'autorisations Windows sur ce dossier pour inclure IIS AppPool\DefaultAppPool

Au lieu de cela, pour arrêter de crier les clients, j'ai accordé les autorisations suivantes sur le dossier:

IUSR

  • Lire et exécuter
  • Contenu du dossier de liste
  • Lis
  • Écrire

IIS_IUSRS

  • Modifier
  • Lire et exécuter
  • Contenu du dossier de liste
  • Lis
  • Écrire

Cela semble avoir fonctionné, mais je crains que trop de privilèges aient été définis. J'ai lu en ligne des informations contradictoires sur le fait de savoir si IUSR est vraiment nécessaire ici. Quelqu'un peut-il clarifier quels utilisateurs/autorisations suffiraient pour créer et supprimer des documents sur ce dossier s'il vous plaît? De plus, l'IUSR fait-il partie du groupe IIS_IUSRS?

Mise à jour et solution

S'il vous plaît voir ma réponse ci-dessous . J'ai dû le faire tristement, car certaines suggestions récentes n'étaient pas bien pensées, ni même sûres (OMI).

130
EvilDr

Je n'aime pas poster ma propre réponse, mais certaines réponses ont récemment ignoré la solution que j'ai postée dans ma propre question, suggérant des approches tout simplement téméraires.

En bref - vous n'avez pas besoin de modifier les privilèges d'un compte d'utilisateur Windows . Cela ne fait que créer des risques. Le processus est entièrement géré dans IIS à l'aide de privilèges hérités.

Application des autorisations Modifier/Écrire au compte d'utilisateur Correct

  1. Cliquez avec le bouton droit sur le domaine lorsqu'il apparaît sous la liste des sites, puis choisissez Modifier les autorisations.

    enter image description here

    Sous l'onglet Sécurité, vous verrez que MACHINE_NAME\IIS_IUSRS est répertorié. Cela signifie que IIS a automatiquement une autorisation de lecture seule sur le répertoire (par exemple, pour exécuter ASP.Net sur le site). Vous n'avez pas besoin de modifier cette entrée .

    enter image description here

  2. Cliquez sur le bouton Éditer, puis sur Ajouter ...

  3. Dans la zone de texte, tapez IIS AppPool\MyApplicationPoolName, en remplaçant MyApplicationPoolName par votre nom de domaine, par exemple. IIS AppPool\mydomain.com

    enter image description here

  4. Appuyez sur la touche Vérifier les noms. Le texte que vous avez tapé se transformera (remarquez le soulignement):

    enter image description here

  5. Appuyez sur OK pour ajouter l'utilisateur

  6. Avec le nouvel utilisateur (votre domaine) sélectionné, vous pouvez désormais fournir en toute sécurité les permissions Modify ou Write

    enter image description here

137
EvilDr

IUSR fait partie du groupe IIS_IUSER. Je suppose donc que vous pouvez supprimer les autorisations pour IUSR sans vous inquiéter. autres lectures

Cependant, un problème est apparu avec le temps, alors que de plus en plus de services système Windows commençaient à fonctionner en tant que NETWORKSERVICE. En effet, les services exécutés en tant que NETWORKSERVICE peuvent altérer d'autres services exécutés sous la même identité. Étant donné que les processus de travail IIS exécutent du code tiers par défaut (ASP classique, ASP.NET, code PHP), il était temps d'isoler les processus de travail IIS autres services système Windows et exécutez IIS processus de travail sous des identités uniques. Le système d'exploitation Windows fournit une fonctionnalité appelée "Comptes virtuels" qui permet à IIS de créer des identités uniques pour chacun de ses pools d'applications. DefaultAppPool est le pool par défaut affecté à tous les pools d'applications que vous créez.

Pour le rendre plus sécurisé, vous pouvez modifier le IIS DefaultAppPool Identity en ApplicationPoolIdentity.

En ce qui concerne les autorisations, Créer et Supprimer récapitule tous les droits pouvant être accordés. Donc, tout ce que vous avez assigné au groupe IIS_USERS est celui qu’ils auront besoin. Ni plus ni moins.

j'espère que cela t'aides.

49
Travis G

Lorsque j'ai ajouté l'autorisation IIS_IUSRS au dossier du site, les ressources, comme js et css, étaient toujours inaccessibles (erreur 401, interdite). Cependant, lorsque j'ai ajouté IUSR - cela est devenu ok. Donc, bien sûr, "vous ne POUVEZ PAS supprimer les autorisations pour IUSR sans vous inquiéter", cher @ Travis G @

6
Alexander

@EvilDr Vous pouvez créer un compte IUSR_ [identifiant] dans votre environnement AD et laisser le pool d'applications particulier s'exécuter sous ce compte IUSR_ [identifiant]:

"Pool d'applications"> "Paramètres avancés"> "Identité"> "Compte personnalisé"

Définissez votre site Web sur "utilisateur Applicaton (authentification unique)" et non sur "utilisateur spécifique", dans les paramètres avancés.

Donnez maintenant à IUSR_ [identificateur] les autorisations NTFS appropriées sur les fichiers et les dossiers, par exemple: modify on companydata.

3
Jan Reilink

Le groupe IIS_IUSRS n'est visible que si vous utilisez ApplicationPool Identity. Même si votre groupe semble vide au moment de l'exécution, IIS s'ajoute à ce groupe pour exécuter un processus de travail conformément à la documentation Microsoft.

3
Ashburn RK

Je voudrais utiliser un utilisateur spécifique (et non utilisateur de l'application). Ensuite, je vais activer l'emprunt d'identité dans l'application. Une fois que vous faites cela, quel que soit le compte défini en tant qu'utilisateur spécifique, ces informations d'identification seraient utilisées pour accéder à ressources locales sur ce serveur (pas pour les ressources externes).

Le paramètre Utilisateur spécifique est spécifiquement conçu pour accéder aux ressources locales.

0
developer747