我正在使用 IIS7(Windows Server 2008 x64),并且我有一个使用匿名身份验证的网站设置。anon 用户身份配置为 IUSR。该应用程序将文件写入一个文件夹,我向该文件夹授予 IIS_IUSRS 组 RW 权限。这不起作用。我必须明确给予 IUSR RW 权限以允许应用程序写入文件夹。
据我了解,应用程序池标识会自动添加到 IIS_IUSRS 组中。我假设 IUSR(或任何匿名用户身份)也是 IIS_IUSRS 组的隐含成员。情况似乎并非如此。
在进行故障排除时,我使用进程监视器查看对文件夹的访问,并确定网络服务(应用程序池标识)正在模拟 IUSR(这是我所期望的),但是将 RW 权限授予 IIS_IUSRS 组并不允许 IUSR 访问访问文件被拒绝)。
任何人都可以解释 IUSR 是否是 IIS_IUSR 组的成员?
我已经查看了以下文档,但没有找到可靠的答案:
Ami*_*idu 14
那是因为这是两个不同的东西。IIS_IUSRS 是IIS 工作进程帐户组。这意味着应用程序池本身在其下运行的身份。IUSR 是匿名用户身份。这意味着 IIS 认为是访问站点的用户的身份。
现在即使你没有说出来,让我猜猜——这个应用程序是经典的asp?(否则,如果是 .Net,则您必须使用模拟)。无论哪种方式,所发生的情况是资源作为模拟身份访问,这意味着在您的情况下是匿名用户,即 IUSR。这就是为什么你必须授予它权利。在 .Net 中,如果您关闭模拟,您会发现 IIS_IUSRS 将如您所愿发挥作用。在经典 ASP(以及静态文件)中,您别无选择,模拟总是“启用”;所以它总是使用的用户身份,而不是池身份。因此,由于 IIS_IUSRS 用于池标识,因此它没有发挥作用。
OP 添加更多信息后编辑:
由于它们的名称,很容易混淆 IUSR 和 IIS_IUSRS。要查看它们的不同之处,请记住 IIS_IUSRS 是 IIS6 中 IIS_WPG 的替代品,IIS6 是工作进程组。向这些组添加要在其下运行池的帐户,而不是匿名身份,匿名权限应该受到更多限制。例如。有时您可能希望使用域帐户来运行池以将 kerberos 委派给其他网络资源。然后您将该服务帐户添加到该组。
当启用模拟时,池/进程假装是用户,因为它被告知。在匿名身份验证(您的情况)的情况下,该用户是 IUSR。在 windows 身份验证的情况下,它将是用户的 windows\域身份。这也是您在模拟时性能受到影响的原因,因为该进程必须切换到不同的身份才能访问资源。
如果您使用 .NET 和匿名身份验证,那么我不明白您为什么要启用模拟。如果您不使用或不需要模拟,您应该了解 IIS7 的一些更多技巧:您可以让您的 IUSR 完全消失并结束所有混乱。我想你会喜欢的,这也是我的首选方法。您所要做的就是告诉它重用池标识作为匿名标识。
因此,在此之后,您只需处理 IIS_IUSRS 组。但是不要混淆,这仍然并不意味着这两者是相同的!进程标识可能可以代替 IUSR,但不能反过来!
需要注意的更多 IIS7 技巧:如果您查看 IIS_IUSRS,它可能是空的。那是因为您的虚拟池标识会在池启动时自动添加到其中,因此您不必担心这些事情。
该表应该有助于更好地阐明如何确定线程执行标识:
以匿名身份访问资源的模拟访问
在 IIS5/6 中启用 Enabled IUSR_computer 或,
IIS7 中的 IUSR 或,
如果您更改了 anon 用户帐户
在 IIS 中,无论您在那里设置什么
启用 禁用 MYDOM\MyName
Disabled Enabled NT Authority\Network Service(池标识)
Disabled Disabled NT Authority\Network Service(池标识)
| 归档时间: |
|
| 查看次数: |
31401 次 |
| 最近记录: |