IIS8中的 IIS _ IUSRS 和 IUSR 权限

我刚刚从 Win2003上的 IIS6转移到 Win2012上的 IIS8,用于托管 ASP.NET 应用程序。

在我的应用程序的一个特定文件夹中,我需要创建和删除文件。在将文件复制到新服务器之后,当我试图删除文件时,总是看到以下错误:

拒绝访问路径“ D: WebSites myapp.co.uk companydata filename.pdf”。

当我检查 IIS 时,我看到应用程序正在 DefaultAppPool 帐户下运行,但是,我从未在此文件夹上设置 Windows 权限以包括 默认应用程序池

相反,为了防止顾客尖叫,我授予了下列文件夹的权限:

IUSR

  • 阅读及执行
  • 列出文件夹内容
  • 写作

IIS _ IUSRS

  • 修改
  • 阅读及执行
  • 列出文件夹内容
  • 写作

这似乎奏效了,但我担心的是,已经设置了太多的特权。我在网上看到过关于是否真的需要 IUSR的相互矛盾的信息。有人能说明哪些用户/权限足以创建和删除这个文件夹上的文档吗?另外,IUSR 是 IIS _ IUSRS 组的一部分吗?

更新及解决方案

请参阅 下面是我的回答。我不得不悲伤地这样做,因为最近的一些建议没有经过深思熟虑,甚至没有安全性(IMO)。

492695 次浏览

@ 邪恶博士 您可以在 AD 环境中创建一个 IUSR _ [标识符]帐户,并让特定的应用程序池在该 IUSR _ [标识符]帐户下运行:

「应用程式池」 > 「高级设定」 > 「识别」 > 「自订帐户」

在「高级设定」中,将网站设定为「应用程式使用者(直通式认证)」而非「特定使用者」。

现在给 IUSR _ [标识符]对文件和文件夹的适当 NTFS 权限,例如: 对 companydata 进行修改。

我会使用特定的用户(和非应用程序用户)。然后,我将在应用程序中启用模拟。一旦您这样做了,无论帐户被设置为特定的用户,这些凭据将用于访问该服务器上的 本地资源(不针对外部资源)。

特定用户设置专门用于访问本地资源。

IUSRIIS_IUSER组的一部分,所以我想您可以删除 IUSR的权限而不必担心

然而,随着时间的推移,越来越多的 Windows 系统服务开始以 NETWORKSERVICE的形式运行,出现了一个问题。这是因为作为 NETWORKSERVICE运行的服务可以篡改在相同标识下运行的其他服务。由于 IIS 辅助进程默认运行第三方代码(经典 ASP、 ASP.NET、 PHP 代码) ,因此现在应该将 IIS 辅助进程与其他 Windows 系统服务隔离开来,并以唯一标识运行 IIS 辅助进程。

Windows 操作系统提供了一个称为“虚拟帐户”的特性,允许 IIS 为其每个应用程序池创建唯一的标识。DefaultAppPool是分配给您创建的所有应用程序池的默认池。

为了使其更加安全,您可以将 IISDefaultAppPool标识更改为 ApplicationPoolIdentity

关于权限,创建和删除总结了可以给予的所有权限。因此,无论您分配给 IIS_USERS组的任何内容都是它们所需要的。

当我将 IIS_IUSRS的权限添加到站点文件夹时,JavaScript 和 CSS 等资源仍然无法访问(错误401,禁止访问)。然而,当我添加 IUSR时,它开始工作了。因此,可以肯定的是,不能删除了 IUSR的权限。

我讨厌发布我自己的答案,但是最近有些答案忽略了我在自己的问题中发布的解决方案,提出了一些简直是鲁莽的方法。

简而言之—— 您根本不需要编辑任何 Windows 用户帐户特权。这样做只会带来风险。流程完全在 IIS 中使用继承的特权进行管理。

没错用户帐户应用修改/写权限

  1. 右键单击出现在“网站”列表下的域,然后选择 编辑权限

保安选项卡下,您将看到列出了 MACHINE_NAME\IIS_IUSRS。这意味着 IIS 自动对目录具有只读权限(例如,在站点中运行 ASP.Net)。您不需要编辑此条目.

  1. 单击 剪辑按钮,然后 < em > Add..。

  2. 在文本框中,键入 IIS AppPool\MyApplicationPoolName,用您的域名或任何正在访问您的站点的应用程序池替换 MyApplicationPoolName,例如 IIS AppPool\mydomain.com

  1. 按下 检查姓名按钮。您输入的文本将转换(注意下划线) :

  1. 好的添加用户

  2. 选择了新用户(您的域)后,现在可以安全地提供任何 修改写作权限

IIS _ IUSRS 组只有在使用 ApplicationPool Identity 时才具有突出显示。即使您有这个组在运行时看起来空的 IIS 添加到这个组根据微软文献运行工作进程。