Nous avons récemment effectué la mise à niveau vers IIS7 en tant que serveur Web principal et j'ai besoin d'une vue d'ensemble en termes d'autorisations. Auparavant, lorsque j'avais besoin d'écrire sur le système de fichiers, j'aurais donné à l'utilisateur AppPool (Service réseau) l'accès au répertoire ou au fichier.
Dans IIS7, par défaut, l'utilisateur AppPool est défini sur ApplicationPoolIdentity
. Ainsi, lorsque je vérifie le gestionnaire de tâches, je constate qu'un compte d'utilisateur appelé "WebSite.com" exécute le processus IIS ("Site Web.com" étant le nom du site Web dans IIS).
Cependant, ce compte d'utilisateur n'existe pas si j'essaie de l'utiliser pour donner des autorisations. Alors, comment puis-je déterminer quel utilisateur donner les autorisations aussi?
Modifier ============================================== =============================
Voir ci-dessous pour le problème de la capture d'écran. Notre site web (www.silverchip.co.uk) fonctionne sous le nom d'utilisateur SilverChip.co.uk. Cependant, lorsque j'ajoute des sanctions, cet utilisateur n'existe pas!
================================= Voir Image AppPool
ApplicationPoolIdentity est la meilleure pratique à utiliser dans IIS7 +. Il s’agit d’un compte créé de manière dynamique et non privilégié. Pour ajouter la sécurité du système de fichiers à un pool d'applications particulier, voir "Identités de pool d'applications" IIS.net . La version rapide:
Si le pool d'applications s'appelle "DefaultAppPool" (remplacez simplement le texte ci-dessous s'il porte un nom différent)
N'oubliez pas d'utiliser le nom local du serveur, pas le nom de domaine, lors de la résolution du nom
IIS AppPool\DefaultAppPool
(juste un rappel parce que ça m'a fait trébucher un peu):
Sous Windows Server 2008 (r2), vous ne pouvez pas attribuer une identité de pool d'applications à un dossier via Propriétés-> Sécurité. Vous pouvez le faire via une invite de la commande admin en utilisant les éléments suivants:
icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Donner accès à l'utilisateur IIS AppPool\YourAppPoolName n'est peut-être pas suffisant avec IIS configurations par défaut.
Dans mon cas, je rencontrais toujours l’erreur Erreur HTTP 401.3 - Unauthorized après l’ajout de l’utilisateur AppPool et elle n’a été corrigée qu’après l’ajout des autorisations à IUSR utilisateur.
Cela est nécessaire car, par défaut, l'accès anonyme est effectué à l'aide de IUSR. Vous pouvez définir un autre utilisateur spécifique, le pool d'applications, ou continuer à utiliser l'IUSR, mais n'oubliez pas de définir les autorisations appropriées.
Crédits de cette réponse: Erreur HTTP 401.3 - Non autorisé
Meilleure réponse de Jon Adams
Voici comment implémenter ceci pour les gens de PowerShell
$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
Partie A: Configuration de votre pool d'applications
Supposons que le pool d'applications s'appelle 'MyPool'. Allez dans 'Paramètres avancés' du pool d'applications à partir du IIS Manager.
Faites défiler jusqu'à "Identité". Tenter de modifier la valeur fera apparaître une boîte de dialogue. Sélectionnez "Compte intégré" et sous celui-ci, sélectionnez "ApplicationPoolIdentity".
Quelques lignes en dessous de "Identity", vous devriez trouver "Load User Profile". Cette valeur doit être définie sur 'True'.
Partie B: Configuration de votre site Web
Partie C: Configuration de votre dossier
Le dossier en question est C: \
Vous devriez maintenant pouvoir utiliser la navigation sur le site
Juste pour ajouter à la confusion, la boîte de dialogue Autorisations effectives (Explorateur Windows) ne fonctionne pas pour ces connexions. J'ai un site "Umbo4" utilisant une authentification unique et j'ai examiné les autorisations effectives de l'utilisateur dans le dossier racine du site. Le test de vérification des noms a résolu le nom "IIS AppPool\Umbo4", mais les autorisations effectives indiquent que l'utilisateur ne dispose d'aucune autorisation sur le dossier (toutes les cases à cocher sont décochées).
J'ai ensuite exclu explicitement cet utilisateur du dossier, à l'aide de l'onglet Sécurité de l'explorateur. Cela a entraîné l'échec du site avec une erreur HTTP 500.19, comme prévu. Les autorisations effectives semblaient toutefois exactement comme avant.
J'ai résolu tous mes problèmes asp.net en créant simplement un nouvel utilisateur appelé IUSER avec un mot de passe et en l'ajoutant au service réseau et aux groupes d'utilisateurs. Créez ensuite tous vos sites virtuels et vos applications authentifiées avec IUSER avec son mot de passe. Définissez un accès de haut niveau aux fichiers pour inclure IUSER et BAM. Au moins 3-4 problèmes, dont celui-ci, ont été résolus.
Dave