Je viens de passer d'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, j'ai continué à voir les erreurs suivantes lorsque j'ai essayé de supprimer des fichiers:
L'accès au chemin «D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf» est refusé.
Lorsque je vérifie IIS, je constate que l'application s'exécute sous le compte DefaultAppPool, cependant, je n'ai jamais configuré les 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
- Liste du contenu du dossier
- Lis
- Écrire
IIS_IUSRS
- Modifier
- Lire et exécuter
- Liste du contenu du dossier
- Lis
- É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 pour savoir si l' IUSR est réellement nécessaire ici. Quelqu'un peut-il préciser quels utilisateurs / autorisations suffiraient pour créer et supprimer des documents sur ce dossier s'il vous plaît? En outre, IUSR fait-il partie du groupe IIS_IUSRS?
Mise à jour et solution
Veuillez voir ma réponse ci-dessous . J'ai malheureusement dû le faire car certaines suggestions récentes n'étaient pas bien pensées, ni même sûres (IMO).
Réponses:
Je déteste publier ma propre réponse, mais certaines réponses ont récemment ignoré la solution que j'ai publiée dans ma propre question, suggérant des approches qui sont tout simplement imprudentes.
En bref, vous n'avez pas du tout besoin de modifier les privilèges de compte d'utilisateur Windows . Cela ne fait qu'introduire un risque. Le processus est entièrement géré dans IIS à l'aide de privilèges hérités.
Application des autorisations de modification / écriture au compte d'utilisateur correct
Cliquez avec le bouton droit sur le domaine lorsqu'il apparaît sous la liste des sites et choisissez Modifier les autorisations
Sous l' onglet Sécurité , vous verrez
MACHINE_NAME\IIS_IUSRS
est répertorié. Cela signifie qu'IIS dispose automatiquement d'une autorisation en lecture seule sur l'annuaire (par exemple pour exécuter ASP.Net sur le site). Vous n'avez pas besoin de modifier cette entrée .Cliquez sur le bouton Modifier , puis sur Ajouter ...
Dans la zone de texte, tapez
IIS AppPool\MyApplicationPoolName
, en le remplaçantMyApplicationPoolName
par votre nom de domaine ou tout autre pool d'applications accédant à votre site, par exempleIIS AppPool\mydomain.com
Appuyez sur le bouton Vérifier les noms . Le texte que vous avez tapé se transformera (notez le soulignement):
Appuyez sur OK pour ajouter l'utilisateur
Avec le nouvel utilisateur (votre domaine) sélectionné, vous pouvez désormais fournir en toute sécurité les autorisations de modification ou d' écriture
la source
IUSR
œuvres. L'ajout deIIS AppPool\Cache
(le nom de mon pool d'applications) donneHTTP Error 401.3 - Unauthorized
MyComputerName\IIS_IUSRS
etIUSR
avec des autorisations en lecture seule pour que cela fonctionne à nouveau. Ceci est juste pour les répertoires virtuels (pas les applications .net), mais pensez que quelqu'un peut le trouver utile.IIS AppPool\[APPLICATION POOL NAME]
. Les espaces vides dans le nom du pool d'applications sont acceptés. Veuillez également noter que cet utilisateur ne sera trouvé que si "Principes de sécurité intégrés" est coché comme type d'objet pour la recherche de nom (champ supérieur de la boîte de dialogue "Sélectionner des utilisateurs ou des groupes").IUSR fait partie du groupe IIS_IUSER, donc je suppose que vous pouvez supprimer les autorisations pour IUSR sans vous inquiéter. Lectures complémentaires
Cependant, un problème est survenu 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 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 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 système Windows et d'exécuter les processus de travail IIS 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 l'identité IIS DefaultAppPool en ApplicationPoolIdentity.
Concernant les autorisations, Créer et Supprimer résume tous les droits qui peuvent être accordés. Donc, tout ce que vous avez attribué au groupe IIS_USERS est qu'ils en auront besoin. Ni plus ni moins.
J'espère que cela t'aides.
la source
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, quand j'ai ajouté IUSR - c'est devenu ok. Donc, bien sûr, "vous NE POUVEZ PAS supprimer les autorisations pour l'IUSR sans vous inquiéter", cher @Travis G @
la source
IIS AppPool\MyApplicationPoolName
selon ma réponse mise à jour. Vous n'avez plus besoin de vous embêter avec IUSR (S)!@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é"
Réglez votre site Web sur "Utilisateur Applicaton (authentification pass-through)" et non sur "Utilisateur spécifique", dans les paramètres avancés.
Maintenant, donnez à cet IUSR_ [identificateur] les autorisations NTFS appropriées sur les fichiers et dossiers, par exemple: modifier sur les données de l'entreprise.
la source
Le groupe IIS_IUSRS n'a de l'importance que si vous utilisez ApplicationPool Identity. Même si vous avez ce groupe semble vide au moment de l'exécution, IIS ajoute à ce groupe pour exécuter un processus de travail selon la littérature Microsoft.
la source
J'utiliserais un utilisateur spécifique (et NON un utilisateur d'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 comme utilisateur spécifique, ces informations d'identification seraient utilisées pour accéder aux ressources locales sur ce serveur (pas pour les ressources externes).
Le paramètre utilisateur spécifique est spécifiquement destiné à accéder aux ressources locales.
la source