Voici un problème avec IIS 7.5 et ASP.NET sur lequel j'ai fait des recherches et qui n'aboutit à rien. 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 tel que C:\dump
lorsqu'il fonctionne en toute confiance ? Comment se fait-il que je n'aie pas à ajouter explicitement un accès en écriture pour l'utilisateur du pool d'applications (dans ce cas-ci ApplicationPoolIdentity
) ?
Voilà ce que je sais :
- Dans IIS 7.5, l'identité par défaut d'un pool d'applications est la suivante
ApplicationPoolIdentity
. -
ApplicationPoolIdentity
représente un compte utilisateur Windows appelé "IIS APPPOOL". \AppPoolName ", qui est créé lorsque le pool d'applications est créé, où AppPoolName est le nom du pool d'applications. - L'option "IIS APPPOOL \AppPoolName L'utilisateur " est par défaut un membre de la
IIS_IUSRS
groupe. - Si vous vous exécutez sous Full Trust, votre application web peut écrire dans de nombreuses zones du système de fichiers (à l'exception des dossiers tels que
C:\Users
,C:\Windows
etc). Par exemple, votre application aura accès en écriture à certains dossiers, comme,C:\dump
. - Par défaut, le
IIS_IUSRS
ne dispose pas d'un accès en lecture ou en écriture àC:\dump
(du moins pas l'accès visible par l'onglet "Sécurité" de l'Explorateur Windows). - Si vous refusez l'accès en écriture à
IIS_IUSRS
vous obtiendrez une SecurityException lorsque vous tenterez d'écrire dans le dossier (comme prévu).
Donc, en prenant tout cela en compte, comment l'accès en écriture est accordé à l'"APPPOOL IIS". \AppPoolName utilisateur " ? Le processus w3wp.exe s'exécute sous cet 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 pénible d'accorder à un utilisateur l'accès à chaque dossier dans lequel il doit écrire si vous exécutez l'application sous Full Trust. Si vous voulez limiter cet accès, vous pouvez toujours exécuter l'application sous Medium Trust. Ce qui m'intéresse, c'est de savoir comment le système d'exploitation et/ou IIS permet à ces écritures d'avoir lieu, même si aucun accès explicite au système de fichiers ne semble être accordé.