好。在这里,我们尝试在Windows Server 2008 R2中的IIS 7.5上建立经典ASP网站。在网站根目录下有一个名为dbc的文件夹,其中有一个用于在处理每个页面时读写某些信息的文件。
问题是,如果我授予IUSR写入权限和IIS_IUSRS写入权限或DefaultAppPool写入权限,则会收到“拒绝访问路径'E:.. \ websiteroot \ dbc \ filename.txt'”
但是,如果我授予该dbc文件夹上的每个人写入权限,那么我不会收到任何错误,一切似乎都非常完美。
更多信息:该网站以经典管道模式运行,启用了匿名身份验证(也许是唯一启用的身份验证)。我尝试使用IUSR帐户以及应用程序池身份进行匿名身份验证。就我而言,ApplicationPoolIdentity是网站身份验证的身份。我们使用COM +进行文件I / O。和经典的ASP Server.CreateObject实例化一个对象。COM +作为网络服务运行。
有什么想法吗?我不想授予所有人“写”权限。我想念什么吗?
求助:这就是我所做的。
我的名为CipherDemo的网站在IIS 7.5中的AppPoolIdentity下运行,该身份可以由Identity IIS AppPool \ CipherDemo定位。我使用ICACLS对该文件夹授予RW权限。
而实际上正在执行文件I / O的COM +在网络服务标识下运行。当我使用Process Monitor跟踪“访问被拒绝”错误时,它发现网络服务对该文件夹仅具有“读取”权限。
我使用了ICACLS“文件夹名称” / grant:r“ NT AUTHORITY \ NETWORKSERVICE” :( OI)(CI)RXW / T授予对该文件夹的写访问权限。
并解决了。
我本意是因为该网站以CipherDemo Identity身份运行,所以将使用该帐户通过COM +访问该文件。但是令人尴尬的是发现COM +仍然可以在其自身的Identity边界上运行。