D'accord. Ici, nous essayons de configurer un site Web ASP classique sur IIS 7.5 dans Windows Server 2008 R2. Il y a un dossier nommé dbc sous la racine du site Web et il a un fichier qui est utilisé pour lire et écrire certaines informations pendant que chaque page est traitée.
Le problème est, si j'accorde des autorisations d'écriture IUSR et des autorisations d'écriture IIS_IUSRS ou des autorisations d'écriture DefaultAppPool, j'obtiens le "Accès au chemin d'accès" E: .. \ websiteroot \ dbc \ filename.txt "est refusé"
Mais si j'accorde à TOUT LE MONDE l'accès en écriture sur ce dossier dbc, je ne reçois aucune erreur, tout semble parfait.
Plus d'informations: Le site Web fonctionne en mode pipeline classique, l'authentification anonyme est activée (c'est peut-être la seule authentification activée). Et j'ai essayé l'authentification anonyme en utilisant le compte IUSR ainsi que l'identité du pool d'applications. Dans mon cas, ApplicationPoolIdentity est l'identité pour l'authentification du site Web. Nous utilisons un COM + pour les E / S de fichiers. Et Classic ASP Server.CreateObject pour instancier un objet hors de lui. COM + fonctionne comme un service réseau.
Pensées? Je ne veux pas accorder la permission d'écriture à TOUS. Suis-je en train de manquer quelque chose?
RESOLU: Voici ce que j'ai fait.
Mon site Web nommé CipherDemo fonctionnait sous un AppPoolIdentity dans IIS 7.5, qui pouvait être localisé par Identity IIS AppPool \ CipherDemo. J'ai utilisé ICACLS pour accorder des autorisations RW sur ce dossier.
et le COM + qui effectuait réellement les E / S de fichier s'exécutait sous l'identité de service réseau. Lorsque j'utilisais Process Monitor pour tracer l'erreur d'accès refusé, il s'est avéré que le service réseau n'a qu'une autorisation de lecture sur ce dossier.
J'ai utilisé ICACLS "foldername" / grant: r "NT AUTHORITY \ NETWORKSERVICE" :( OI) (CI) RXW / T pour accorder l'accès en écriture sur ce dossier.
Et je l'ai résolu.
J'avais l'intention que, puisque le site Web fonctionne en tant qu'identité CipherDemo, ce sera le compte qui sera utilisé pour accéder au fichier via COM +. Mais il est gênant de découvrir que le COM + fonctionnerait toujours sur ses propres limites d'identité.
Vous pouvez ajouter le compte via l'interface graphique NTFS en le tapant directement. Le nom est au format
IIS APPPOOL\<<app pool name>>
, par exempleIIS APPPOOL\DefaultAppPool
. (voir cet article de support Microsoft )Une solution alternative: j'ai utilisé le compte "Service réseau" en tant qu'utilisateur du pool d'applications en lui accordant une autorisation d'écriture.
la source
Si vous souhaitez uniquement accorder l'autorisation d'écriture de dossier à l'utilisateur spécifique, vous devez également remplacer «identité d'utilisateur anonyme» du site par «utilisateur spécifique», et non «identité du pool d'applications».
la source