Voici un problème avec IIS 7.5 et ASP.NET que j'ai recherché et que je n'ai trouvé nulle part. Toute aide serait grandement appréciée.
Ma question est la suivante: en utilisant ASP.NET dans IIS 7.5, comment IIS et / ou le système d'exploitation permettent-ils à l'application Web d'écrire dans un dossier comme C:\dump
lors d'une exécution en toute confiance? Comment se fait-il que je n'ai pas à ajouter explicitement un accès en écriture à l'utilisateur du pool d'applications (dans ce cas ApplicationPoolIdentity
)?
Ce que je sais:
- Dans IIS 7.5, l'identité par défaut d'un pool d'applications est
ApplicationPoolIdentity
. ApplicationPoolIdentity
représente un compte d'utilisateur Windows appelé "IIS APPPOOL \ AppPoolName", qui est créé lors de la création du pool d'applications, où AppPoolName est le nom du pool d'applications.- L'utilisateur "IIS APPPOOL \ AppPoolName" est par défaut un membre du
IIS_IUSRS
groupe. - Si vous utilisez en pleine confiance, votre application web peut écrire dans de nombreux domaines du système de fichiers ( à l' exclusion des dossiers comme
C:\Users
,C:\Windows
, etc.). Par exemple, votre application aura accès à écrire à certains dossiers, comme,C:\dump
. - Par défaut, le
IIS_IUSRS
groupe ne dispose pas d'un accès en lecture ou en écritureC:\dump
(du moins pas un accès visible via l'onglet "Sécurité" dans l'Explorateur Windows). - Si vous refusez l'accès en écriture à
IIS_IUSRS
, vous obtiendrez une exception SecurityException lors de la tentative d'écriture dans le dossier (comme prévu).
Ainsi, compte tenu de tout cela, comment l'accès en écriture est-il accordé à l'utilisateur "IIS APPPOOL \ AppPoolName"? Le processus w3wp.exe s'exécute en tant qu'utilisateur, alors qu'est-ce qui permet à cet utilisateur d'écrire dans un dossier auquel il ne semble pas avoir d'accès explicite?
Veuillez noter que je comprends que cela a probablement été fait pour des raisons de commodité, car il serait difficile d'accorder à un utilisateur l'accès à tous les dossiers dans lesquels il doit écrire si vous exécutez sous Full Trust. Si vous souhaitez limiter cet accès, vous pouvez toujours exécuter l'application sous Medium Trust. Je souhaite en savoir plus sur la manière dont le système d'exploitation et / ou IIS autorise ces écritures, même s'il ne semble pas y avoir d'accès explicite au système de fichiers.
Faites un clic droit sur le dossier.
Cliquez sur Propriétés
Cliquez sur l'onglet Sécurité. Vous verrez quelque chose comme ceci:
Cochez / décochez tout accès dont vous avez besoin pour accorder au compte
Cliquez sur le bouton Appliquer, puis sur OK.
la source
Chaque pool d'applications dans IIs crée son propre dossier utilisateur sécurisé avec une autorisation de lecture / écriture COMPLÈTE par défaut sous c: \ users. Ouvrez votre dossier Utilisateurs et voyez quels sont les dossiers du pool d'applications, cliquez avec le bouton droit et vérifiez leurs droits pour le compte virtuel du pool d'applications attribué. Vous devriez déjà voir votre compte de pool d'applications ajouté avec un accès en lecture / écriture attribué à sa racine et à ses sous-dossiers.
Ainsi, ce type d'accès au stockage de fichiers se fait automatiquement et vous devriez pouvoir écrire ce que vous voulez dans les dossiers des comptes d'utilisateurs des pools d'applications sans rien changer. C'est pourquoi des comptes d'utilisateurs virtuels pour chaque pool d'applications ont été créés.
la source
J'ai essayé cela pour résoudre les problèmes d'accès à un site Web IIS, qui se manifestaient par quelque chose comme ce qui suit dans les journaux d'événements → Windows → Application:
À la fin, j'ai dû donner au
Everyone
groupe Windows un accès en lecture à ce dossier pour qu'il fonctionne correctement.la source