我刚刚从Win2003上的IIS6转移到Win2012上的IIS8,用于托管ASP.NET应用程序。
在我的应用程序的一个特定文件夹中,我需要创建和删除文件。 将文件复制到新的服务器后,当我试图删除文件时,我一直看到以下错误。
对路径'D:\WebSites\myapp.co.uk\companydata\filename.pdf' 的访问被拒绝。
当我检查IIS时,我看到应用程序在DefaultAppPool账户下运行,然而,我从来没有在这个文件夹上设置Windows权限,包括IIS AppPool\DefaultAppPool。
相反,为了阻止客户的尖叫,我在该文件夹上授予了以下权限。
IUSR
IIS_IUSRS
这似乎奏效了,但我担心设置了太多的权限。 我在网上读到了关于这里是否真的需要IUSR的相互矛盾的信息。 谁能说明哪些用户/权限足以在这个文件夹上创建和删除文件? 另外,IUSR是IIS_IUSRS组的一部分吗?
请看我下面的答案。 我不得不这样做,因为最近的一些建议没有经过深思熟虑,甚至是不安全的(IMO)。
IUSR是IIS_IUSER组的一部分,所以我想你可以删除IUSR的权限而不用担心。进一步阅读。
然而,随着时间的推移,越来越多的Windows系统服务开始以NETWORKSERVICE的形式运行,一个问题出现了。这是因为以NETWORKSERVICE身份运行的服务可以篡改以相同身份运行的其他服务。因为IIS工作进程默认运行第三方代码(经典ASP、ASP.NET、PHP代码),所以是时候将IIS工作进程与其他Windows系统服务隔离开来,以独特的身份运行IIS工作进程。Windows操作系统提供了一个叫做 "虚拟账户 "的功能,允许IIS为它的每个应用池创建唯一的身份。DefaultAppPool是默认的池,它被分配给你创建的所有应用池。
为了使它更安全,你可以把IIS的DefaultAppPool身份改为ApplicationPoolIdentity。
关于权限,创建和删除总结了所有可以被赋予的权利。所以,无论你给IIS_USERS组分配了什么,他们都会要求。没有更多,也没有更少。
希望这有帮助。