当我将IIS_IUSRS RW访问权限添加到文件夹时,为什么它不会自动允许ISUR RW访问?


11

我正在使用IIS7(Windows Server 2008 x64),并且具有使用匿名身份验证的网站设置。匿名用户身份配置为IUSR。该应用程序将文件写入文件夹,并且我将IIS_IUSRS组RW权限授予该文件夹。这行不通。我必须明确赋予IUSR RW权限,以允许应用程序写入文件夹。

据我了解,应用程序池标识将自动添加到IIS_IUSRS组。我以为IUSR(或任何匿名用户身份)也是IIS_IUSRS组的隐含成员。看来情况并非如此。

在进行故障排除时,我使用进程监视器查看对该文件夹的访问,并确定网络服务(应用程序池标识)正在模仿IUSR(这是我所期望的),但是向IIS_IUSRS组提供RW权限不允许IUSR访问该文件夹。访问文件被拒绝)。

谁能解释IUSR是否为IIS_IUSRS组的成员?

我查看了以下文档,但未找到可靠的答案:

了解IIS 7中的内置用户和组帐户

应用程序池标识

Answers:


14

那是因为这是两回事。IIS_IUSRS是IIS工作进程帐户的组。这意味着应用程序池本身将以其身份运行。IUSR是匿名用户身份。这意味着IIS认为是正在访问该站点的用户的身份。

现在,即使您没有说出来,也让我猜猜-这个应用是经典的ASP吗?(否则,如果它是.Net,则必须使用模拟)。无论哪种方式,发生的都是将资源作为模拟身份(在您的情况下为匿名用户)(即IUSR)进行访问。因此,您必须授予它权利。在.Net中,如果关闭模拟,您将发现IIS_IUSRS将按预期发挥作用。在Classic ASP(和静态文件)中,您别无选择,模拟始终处于“启用”状态。因此,它始终是所使用的用户身份,而不是池身份。因此,由于IIS_IUSRS用于池标识,因此它不在起作用。


OP添加更多信息后进行编辑:

由于名称很容易混淆IUSR和IIS_IUSRS。要了解它们的不同之处,请记住IIS_IUSRS替代了IIS6(即工作进程组)中的IIS_WPG。向这些组添加您要在其下运行池的帐户,而不是匿名身份,匿名权限应该受到更多限制。例如。有时,您可能想使用域帐户来运行池,以便将kerberos委派给其他网络资源。然后,您可以将该服务帐户添加到该组中。

启用模拟后,由于被告知要假装池/进程,因此它假装为用户。如果是匿名身份验证(您的情况),则该用户为IUSR。如果是Windows身份验证,则将是用户的Windows \域标识。这也是为什么模拟会导致性能下降的原因,因为该过程必须切换到其他身份进行资源访问。

如果您使用的是.NET和匿名身份验证,那么我不明白为什么您要启用模拟功能。如果您不使用或不需要模拟,则在使用IIS7时应注意一些更多的技巧:您可以使IUSR完全消失并消除所有混乱。我想您会喜欢,这也是我的首选方法。您需要做的就是告诉它将池标识重新用作匿名标识

因此,在此之后,您只需要处理IIS_IUSRS组即可。但是请不要感到困惑,这仍然并不意味着这两个是相同的!进程标识可以代替IUSR,但反之则不行!

还有一些需要注意的IIS7技巧:如果您查看IIS_IUSRS,它可能为空。那是因为您的虚拟池标识会在池启动时自动添加到其中,因此您不必担心这些事情。

该表应有助于更好地阐明如何确定线程执行身份:

匿名访问的匿名访问资源

启用在IIS5 / 6中启用IUSR_computer或
                                       IIS7中的IUSR,或
                                       如果您更改了匿名用户帐户 
                                       在IIS中,无论您在哪里设置
启用禁用MYDOM \ MyName
禁用启用NT Authority \ Network服务(池标识)
禁用禁用NT Authority \ Network服务(池标识)


我们使用.Net(针对3.5)进行了定义,但可能使用了模拟功能。我必须与开发人员确认。我感到困惑的原因是,我假设(似乎是错误的)匿名用户身份自动成为IIS_IUSRS组的成员。由于他当时不允许我澄清,如果我不愿意,请纠正我。

1)使用经典ASP,文件访问权限使用匿名用户身份。在IIS 7或更高版本中,默认情况下,该用户不是IIS_IUSRS组的成员。2)如果启用了模拟,则使用ASP.Net,文件访问权限将使用匿名用户身份。在IIS 7或更高版本中,默认情况下,该用户不是IIS_IUSRS组的成员。3)如果禁用了模拟,则使用ASP.Net,文件访问权限将使用工作进程标识。在IIS 7或更高版本中,默认情况下,该用户始终是IIS_IUSRS组的成员。

是的,在所有方面绝对正确!完全清楚地说,在#1和#2中,应添加“如果启用了IIS anon auth”,我不必早些添加,因为您已经说过您正在使用anon。请参阅我添加的表格以更好地解释这一点。
阿米特·奈杜

非常感谢您澄清这一点。它与我通过反复试验发现的结果一致,但是我在任何地方都没有看到清楚的文档。对于在服务器上使用LUA的管理员设置需要写许可的IIS应用程序而言,这至关重要。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.