rsb*_*rro 387 asp.net permissions iis-7.5 windows-server-2008-r2
这是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允许这些写入的方式,即使似乎没有授予显式文件系统访问权限.
Kev*_*Kev 398
将ApplicationPoolIdentity被分配的成员Users组以及该IIS_IUSRS组.乍一看,这可能看起来有些令人担忧,但该Users组织的NTFS权利有限.
例如,如果您尝试在文件夹中创建一个文件C:\Windows夹,那么您将发现不能.在ApplicationPoolIdentity仍然需要能够从Windows系统文件夹读取文件(否则怎么回事就工作进程能够动态地加载DLL必不可少的).
关于您对能够写入c:\dump文件夹的观察.如果您查看高级安全性设置中的权限,您将看到以下内容:

请参阅继承的特殊权限c:\:

这就是您的网站ApplicationPoolIdentity可以读取和写入该文件夹的原因.这项权利是从c:\驱动器继承而来的.
在一个共享环境中,您可能拥有数百个站点,每个站点都有自己的应用程序池和应用程序池标识,您可以将站点文件夹存储在已Users删除该组的文件夹或卷中,并设置权限,以便只有管理员和SYSTEM帐户具有访问权限(具有继承权).
然后,您将IIS AppPool\[name]在其站点根文件夹上单独分配每个所需的必需权限.
您还应确保在存储可能敏感的文件或数据时创建的任何文件夹都Users删除了该组.您还应确保您安装的任何应用程序不将敏感数据存储在其c:\program files\[app name]文件夹中,而是使用用户配置文件文件夹.
所以,是的,乍一看它看起来似乎ApplicationPoolIdentity拥有比它应有的更多的权利,但它实际上没有权利,而不是它的集团成员资格.
一个ApplicationPoolIdentity可以使用的Sysinternals待检查的组成员资格进程浏览器工具.查找使用您感兴趣的应用程序池标识运行的工作进程(您必须将User Name列添加到要显示的列列表中:

例如,我在这里有一个名为" 900300应用程序池标识"的池IIS APPPOOL\900300.右键单击该进程的属性并选择Security选项卡,我们看到:

我们可以看到IIS APPPOOL\900300该Users组织的成员.
flu*_*uid 30
右键单击文件夹.
单击属性
单击安全选项卡.你会看到这样的东西:
选中/取消选中您需要授予帐户的任何访问权限
单击Apply按钮,然后单击OK.
| 归档时间: |
|
| 查看次数: |
273283 次 |
| 最近记录: |