IIS8中的IIS_IUSRS和IUSR权限

我刚刚从Win2003上的IIS6移到Win2012上的IIS8来托pipeASP.NET应用程序。

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

访问path“D:\ WebSites \ myapp.co.uk \ companydata \ filename.pdf”被拒绝。

当我检查IIS时,我发现应用程序正在DefaultAppPool帐户下运行,但是,我从来没有在此文件夹上设置Windows权限以包含IIS AppPool \ DefaultAppPool

相反,为了阻止尖叫客户,我授予了文件夹的以下权限:

IUSR

  • 阅读并执行
  • 列出文件夹内容

IIS_IUSRS

  • 修改
  • 阅读并执行
  • 列出文件夹内容

这似乎奏效了,但是我担心已经设置了太多的权限。 我在网上阅读了冲突的信息,关于IUSR是否真的需要在这里。 任何人都可以澄清哪些用户/权限就足够创build和删除该文件夹上的文件吗? 另外,IUSR是IIS_IUSRS组的一部分吗?

更新和解决scheme

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

我讨厌张贴我自己的答案,但最近有些答案忽视了我在自己的问题上发表的解决scheme,暗示了这种方法毫无道理。

简而言之, 您不需要编辑任何Windows用户帐户权限 。 这样做只会带来风险。 该过程完全在IIS中使用inheritance权限进行pipe理。

将修改/写入权限应用于正确的用户帐户

  1. 在出现在“站点”列表下方的域中右键单击该域,然后select“ 编辑权限”

    在这里输入图像描述

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

    在这里输入图像描述

  2. 点击编辑button,然后添加…

  3. 在文本框中键入IIS AppPool\MyApplicationPoolName ,用您的域名replaceMyApplicationPoolName ,例如IIS AppPool\mydomain.com

    在这里输入图像描述

  4. 检查姓名button。 您input的文字将会变形(注意下划线):

    在这里输入图像描述

  5. OK添加用户

  6. select新用户(您的域)后,现在可以安全地提供任何修改写入权限

    在这里输入图像描述

IUSR是IIS_IUSER组的一部分,所以我想你可以删除IUSR的权限而不用担心。 进一步阅读

但是,随着越来越多的Windows系统服务开始作为NETWORKSERVICE运行,随着时间的推移,出现了一个问题。 这是因为作为NETWORKSERVICE运行的服务可以篡改以相同身份运行的其他服务。 由于IIS工作进程默认运行第三方代码(传统ASP,ASP.NET,PHP代码),因此是时候将IIS工作进程与其他Windows系统服务隔离开来,并以唯一身份运行IIS工作进程。 Windows操作系统提供了一个名为“虚拟帐户”的function,允许IIS为其每个应用程序池创build唯一标识。 DefaultAppPool是分配给您创build的所有应用程序池的默认池。

为了使它更安全,您可以将IIS DefaultAppPool标识更改为ApplicationPoolIdentity。

关于权限,“创build”和“删除”汇总了可以给出的所有权限。 所以无论你分配给IIS_USERS组是什么,他们将需要。 没有什么比这更less的了。

希望这可以帮助。

@EvilDr您可以在您的AD环境中创build一个IUSR_ [标识符]帐户,并让该特定应用程序池在该IUSR_ [标识符]帐户下运行:

“应用程序池”>“高级设置”>“身份”>“自定义帐户”

将您的网站设置为“应用程序用户(传递身份validation)”,而不是“高级设置”中的“特定用户”。

现在给IUSR_ [标识符]文件和文件夹上适当的NTFS权限,例如:修改companydata。

当我添加IIS_IUSRS权限到站点文件夹 – 资源,如js和css,仍然无法访问(错误401,禁止)。 但是,当我添加IUSR时,它就成了好的。 所以肯定“你不能无视移除IUSR的权限”,亲爱的@Travis G @

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

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

IIS_IUser权限足以创build或删除文件。 不需要IUser许可。 我给这个权限超过20个文件夹。 我正在寻找替代方法来做到这一点。 如果有任何选项可用,build议我

只有在使用ApplicationPool Identity时,IIS_IUSRS组才具有突出性。 即使您在运行时将这个组看起来是空的,IIS也会根据微软文献向这个组添加一个工作进程。