176 votes

Autorisations IIS_IUSRS et IUSR dans IIS8

Je viens de passer de IIS6 sur Win2003 à IIS8 sur 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, je voyais toujours les erreurs suivantes lorsque j'essayais de supprimer des fichiers :

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

Lorsque je vérifie IIS, je vois que l'application est exécutée sous le compte DefaultAppPool, cependant, je n'ai jamais configuré les permissions Windows sur ce dossier pour inclure IIS AppPool \DefaultAppPool

Au lieu de cela, pour empêcher les clients de crier, j'ai accordé les permissions suivantes sur le dossier :

IUSR

  • Lire et exécuter
  • Liste des contenus des dossiers
  • Lire
  • Écrire à

IIS_IUSRS

  • Modifier
  • Lire et exécuter
  • Liste des contenus des dossiers
  • Lire
  • Écrire à

Cela semble avoir fonctionné, mais je crains que trop de privilèges aient été définis. J'ai lu des informations contradictoires en ligne sur le fait que IUSR n'est pas du tout nécessaire ici. Quelqu'un peut-il préciser quels utilisateurs/permissions suffiraient pour créer et supprimer des documents dans ce dossier ? De plus, IUSR fait-il partie du groupe IIS_IUSRS ?

Mise à jour et solution

Veuillez consulter ma réponse ci-dessous . J'ai dû le faire, malheureusement, car certaines suggestions récentes n'étaient pas bien pensées, ni même sûres (selon moi).

0 votes

Pour faire fonctionner WordPress sur IIS 8 sur une machine virtuelle Azure (Windows Server 2012 Datacenter), j'ai dû accorder les autorisations que vous avez indiquées pour IIS_IUSRS à IUSR pour le répertoire blog inetpub/wwwroot.

0 votes

Pour ceux qui viennent sur ce fil de discussion parce qu'ils essaient d'exécuter Joomla sous IIS et ont des problèmes avec les paramètres de sécurité des fichiers, j'ai écrit un article de blog avec ce que je pense être la bonne solution. Probablement aussi applicable à WordPress ou à d'autres programmes de serveur web basés sur PHP. renniestechblog.com/index.php/information/

0 votes

52voto

Travis G Points 1049

IUSR fait partie de la IIS_IUSER donc je suppose que vous pouvez supprimer les permissions de IUSR sans s'inquiéter. Autres lectures

Cependant, un problème est apparu au fil du temps, car de plus en plus de services système Windows ont commencé à s'exécuter en tant que NETWORKSERVICE . Cela est dû au fait que les services fonctionnant en tant que NETWORKSERVICE peut altérer d'autres services qui fonctionnent sous la même identité. Comme les processus de travail IIS exécutent par défaut du code tiers (ASP classique, ASP.NET, code PHP), il était temps d'isoler les processus de travail IIS des autres services du système Windows et d'exécuter les processus de travail IIS sous des identités uniques.

Le système d'exploitation Windows offre une fonction 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 qui est attribué à tous les pools d'applications que vous créez.

Pour le rendre plus sûr, vous pouvez modifier le paramètre IIS DefaultAppPool Identité à ApplicationPoolIdentity .

En ce qui concerne les autorisations, Créer et Supprimer résument tous les droits qui peuvent être accordés. Ainsi, quel que soit le droit que vous avez attribué au IIS_USERS est tout ce dont ils auront besoin.

3 votes

Je viens d'installer IIS 8 sous Server Essentials 2012 R2. Cette machine est également un contrôleur de domaine. Dans AD Users and Computers, le groupe IIS_IUSRS est vide - il ne contient pas l'utilisateur IUSR. Je suppose que je pourrais l'ajouter au groupe, mais pour les sites anonymes, je vais simplement accorder des autorisations à l'utilisateur IUSR.

7 votes

Lorsque j'ai accordé des permissions à l'IUSR, cela a fonctionné. Lorsque j'ai accordé des autorisations à IIS_IUSER, cela n'a pas fonctionné.

2 votes

Iusr n'est pas un membre de IIS_Iusrs. (ou Windows a un bug) Généralement, Windows utilise IIS_Iusrs. (exécution de pages dynamiques ou accès à des pages statiques) mais il y a certains cas où Windows utilise Iusr, pas IIS_Iusrs. le téléchargement de fichiers en utilisant PHP est l'un de ces cas. (et si vous n'avez accordé que iis_iusr, vous rencontrerez une exception de privilège) Je pense que M$ devrait donner une "meilleure pratique" pour l'octroi des permissions de Iusr et IIS_Iusrs...

9voto

Alexander Points 23

Quand j'ai ajouté des permissions pour IIS_IUSRS dans le dossier du site, les ressources comme JavaScript et CSS étaient toujours inaccessibles (erreur 401, interdite). Cependant, lorsque j'ai ajouté IUSR ça a commencé à fonctionner. Donc, vous êtes sûr ne peut pas supprimer les autorisations pour IUSR .

8 votes

N'oubliez pas que (si vous avez IIS7+) la solution correcte est d'utiliser IIS AppPool\MyApplicationPoolName selon ma réponse mise à jour. Vous n'avez plus besoin de vous embêter avec l'IUSR(S) !

3 votes

J'ai essayé votre suggestion, mais cela ne fonctionne pas. J'ai supprimé IUSR(S) de la permission et n'ai conservé que le nom du pool sous lequel l'application est exécutée. Les ressources sont devenues inaccessibles. IIS 8.5. Lorsque j'ai ajouté IUSR - cela a fonctionné.

0 votes

Vous devez poster votre propre question en donnant le plus d'informations possible sur votre situation.

5voto

Jan Reilink Points 156

@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 comme "Utilisateur de l'application (authentification par passage)" et non "Utilisateur spécifique", dans les paramètres avancés.

Maintenant, donnez à ce IUSR_[identifiant] les permissions NTFS appropriées sur les fichiers et les dossiers, par exemple : modifier sur companydata.

0 votes

Merci, mais je n'utilise pas AD. De plus, selon la documentation récente de MS, IIS 7&8 est déjà configuré pour fonctionner comme vous le décrivez. La question qui se pose est de savoir si l'un des comptes spécifiés est réellement nécessaire ou non, et lequel des deux fait l'affaire ?

0 votes

@EvilDr Merci de préciser que vous n'utilisez pas d'AD. En fait, IIS_IUSRS n'est pas un utilisateur, c'est un groupe. Comme IIS_WPG sur IIS 6.0. Vous pouvez lire sur IIS_IUSRS et IUSR ici : lien . Vous pouvez définir des autorisations de modification sur companydata* pour le compte IUSR et vous pouvez ajouter cet utilisateur au groupe IIS_IUSRS et utiliser ce compte d'utilisateur pour exécuter votre pool d'applications. Vous n'avez besoin de définir des autorisations pour IIS_IUSRS sur les dossiers partagés (TMP par exemple) que si vous avez plusieurs comptes IUSR.

0 votes

Jan, j'ai toujours pensé que l'IUSR faisait partie du groupe IIS_IUSRS par défaut ? Comment pouvez-vous vérifier si c'est le cas, puisque le compte IUSR est un compte intégré. Voulez-vous dire que je devrais décocher la case Modifier pour IIS_USRS et la cocher pour IUSR à la place ? Étant donné l'exigence d'une seule application, je ne pense pas que cela fasse vraiment une différence, n'est-ce pas ?

0voto

developer747 Points 1762

J'utiliserais l'utilisateur spécifique (et NON l'utilisateur de l'application). Ensuite, je vais activer l'impersonnalisation dans l'application. Une fois que vous aurez fait cela, quel que soit le compte défini comme utilisateur spécifique, ces informations d'identification seront utilisées pour accéder aux données suivantes ressources locales sur ce serveur (pas pour les ressources externes).

Le paramètre Utilisateur spécifique est spécifiquement destiné à l'accès aux ressources locales.

0voto

Sathya Points 55

La permission IIS_IUser est plus que suffisante pour créer ou supprimer des fichiers. L'autorisation IUser n'est pas nécessaire. Je donne cette autorisation pour plus de 20 dossiers. Je cherche un autre moyen de le faire. Suggérez-moi si une option est disponible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X