【发布时间】:2011-07-23 04:53:15
【问题描述】:
这是一个关于 IIS 7.5 和 ASP.NET 的问题,我一直在研究它却一无所获。任何帮助将不胜感激。
我的问题是:在 IIS 7.5 中使用 ASP.NET,在完全信任的情况下,IIS 和/或操作系统如何允许 Web 应用程序写入 C:\dump 之类的文件夹?为什么我不必为应用程序池用户显式添加写入权限(在本例中为 ApplicationPoolIdentity)?
我知道的就这么多:
- 在 IIS 7.5 中,应用程序池的默认标识为
ApplicationPoolIdentity。 -
ApplicationPoolIdentity代表一个名为“IIS APPPOOL\AppPoolName”的Windows用户账号,在创建应用程序池时创建,其中AppPoolName是应用程序池的名称。 - 默认情况下,“IIS APPPOOL\AppPoolName”用户是
IIS_IUSRS组的成员。 - 如果您在完全信任下运行,您的 Web 应用程序可以写入文件系统的许多区域(不包括
C:\Users、C:\Windows等文件夹)。例如,您的应用程序将有权写入某些文件夹,例如C:\dump。 - 默认情况下,
IIS_IUSRS组没有对C:\dump的读取或写入访问权限(至少没有通过 Windows 资源管理器中的“安全”选项卡可见的访问权限)。 - 如果您拒绝对
IIS_IUSRS的写入访问权限,您将在尝试写入文件夹时收到 SecurityException(如预期的那样)。
那么,考虑到所有这些,如何向“IIS APPPOOL\AppPoolName”用户授予写访问权限? w3wp.exe 进程以该用户身份运行,那么是什么允许该用户写入它似乎没有显式访问权限的文件夹?
请注意,我理解这可能是为了方便起见,因为如果您在完全信任下运行,授予用户访问它需要写入的每个文件夹的权限会很痛苦。如果您想限制此访问,您始终可以在中等信任下运行该应用程序。我有兴趣了解操作系统和/或 IIS 允许这些写入发生的方式,即使似乎没有明确授予文件系统访问权限。
【问题讨论】:
标签: asp.net permissions iis-7.5 windows-server-2008-r2