IIS AppPoolIdentity和文件系统写入访问权限
这是IIS 7.5和ASP.NET的一个问题,我一直在研究和获取。 任何帮助将不胜感激。
我的问题是:在IIS 7.5中使用ASP.NET时,IIS和/或操作系统在完全信任下运行时如何允许Web应用程序写入类似C:dump
的文件夹? 它是如何不必为应用程序池用户明确添加写入权限(在这种情况下为ApplicationPoolIdentity
)?
我知道的很多:
ApplicationPoolIdentity
。 ApplicationPoolIdentity
表示一个名为“IIS APPPOOL AppPoolName”的Windows用户帐户,该帐户在创建应用程序池时创建,其中AppPoolName是应用程序池的名称。 IIS_IUSRS
组的成员。 C:Users
, C:Windows
等文件夹)。 例如,您的应用程序将有权写入某些文件夹,如C:dump
。 IIS_IUSRS
组不具有对C:dump
读取或写入访问权限(至少不能通过Windows资源管理器中的“安全”选项卡查看)。 IIS_IUSRS
写入访问,则在尝试写入文件夹时(如预期的那样),您将收到SecurityException。 因此,考虑到所有这些,如何授予“IIS APPPOOL AppPoolName”用户的写权限? w3wp.exe进程以该用户身份运行,因此允许此用户写入文件夹似乎没有显式访问权限?
请注意,我理解这可能是为了方便起见,因为如果您在“完全信任”下运行,授予用户访问需要写入的每个文件夹的操作是一种痛苦。 如果您想限制此访问权限,则可以始终在中信任下运行该应用程序。 我有兴趣了解操作系统和/或IIS允许这些写入发生的方式,即使似乎没有授予明确的文件系统访问权限。
ApplicationPoolIdentity
被分配了Users
组以及IIS_IUSRS
组的成员资格。 乍一看这可能看起来有些令人担忧,但Users
组的NTFS权限有所限制。
例如,如果你尝试在C:Windows
文件夹中创建一个文件夹,那么你会发现你不能。 ApplicationPoolIdentity
仍然需要能够从Windows系统文件夹中读取文件(否则工作进程将如何动态加载重要的DLL)。
关于你能够写入你的c:dump
文件夹的意见。 如果您查看高级安全设置中的权限,您将看到以下内容:
看到从c:
继承的c:
:
这就是您的网站的ApplicationPoolIdentity
可以读取和写入该文件夹的原因。 该权利正在从c:
驱动器继承。
在可能有数百个站点的共享环境中,每个站点都有自己的应用程序池和应用程序池标识,您可以将站点文件夹存储在删除了Users
组并且设置了权限的文件夹或卷中,以便只有管理员和SYSTEM帐户可以访问(带继承)。
然后,您将单独为每个IIS AppPool[name]
在其站点根文件夹上分配必需的权限。
您还应该确保您在存储潜在敏感文件或数据的位置创建的任何文件夹都已删除“ Users
组。 您还应该确保您安装的任何应用程序不将敏感数据存储在c:program files[app name]
文件夹中,而是使用用户配置文件文件夹。
所以是的,乍一看,它看起来像ApplicationPoolIdentity
拥有比它应该更多的权限,但它实际上没有比它的组成员身份要求更多的权限。
可以使用SysInternals Process Explorer工具检查ApplicationPoolIdentity
的组成员资格。 找到您感兴趣的应用程序池标识正在运行的工作进程(您将不得不将User Name
名列添加到要显示的列列表中:
例如,我有一个名为900300
的池,它具有IIS APPPOOL900300
的应用程序池标识。 右键点击进程的属性并选择安全选项卡,我们看到:
正如我们所看到的, IIS APPPOOL900300
是Users
组的成员。
右键点击文件夹。
点击属性
点击安全标签。 你会看到这样的东西:
选中/取消选中您需要授予帐户的任何访问权限
点击应用按钮,然后确定。
IIs中的每个应用程序池都创建了自己的安全用户文件夹,默认情况下在c: users下具有完全读/写权限。 打开您的用户文件夹并查看哪些应用程序池文件夹在那里,右键单击并检查其分配的应用程序池虚拟帐户的权限。 您应该看到您的应用程序池帐户已经添加了分配给其根目录和子目录的读/写访问权限。
因此,这种类型的文件存储访问是自动完成的,您应该可以在应用程序池用户帐户文件夹中编写您喜欢的任何内容,而无需更改任何内容。 这就是为什么创建每个应用程序池的虚拟用户帐户的原因。
链接地址: http://www.djcxy.com/p/21417.html上一篇: IIS AppPoolIdentity and file system write access permissions