在Windows Server 2008下使用ASP.NET 4.0安装了大量相关的用户帐户,我不知道哪个是哪个,它们有什么区别,哪个才是我的应用程序真正运行的帐户.以下是一份 list :
- IIS_IUSRS
- IUSR
- DefaultAppPool
- ASP.NETV4.0
- 网络服务
- 本地服务.
什么是什么?
在Windows Server 2008下使用ASP.NET 4.0安装了大量相关的用户帐户,我不知道哪个是哪个,它们有什么区别,哪个才是我的应用程序真正运行的帐户.以下是一份 list :
什么是什么?
这是一个非常好的问题,遗憾的是,许多开发人员没有问足够多关于IIS/ASP的问题.NET安全性,作为一名web开发人员和设置IIS.所以这是....
要涵盖列出的身份,请执行以下操作:
100
这与旧的IIS6 IIS_WPG
组类似.它是一个内置组,其安全性配置为该组的任何成员都可以充当应用程序池标识.
100
此帐户类似于旧的IUSR_<MACHINE_NAME>
本地帐户,该帐户是IIS5和IIS6网站的默认匿名用户(即通过站点属性的"目录安全"选项卡配置的帐户).
有关IIS_IUSRS
和IUSR
的更多信息,请参阅:
100
如果应用程序池配置为使用应用程序池标识功能运行,则会动态创建一个名为IIS AppPool\<pool name>
的"综合"帐户,用作池标识.在本例中,将为池的生命周期创建一个名为IIS AppPool\DefaultAppPool
的综合帐户.如果删除该池,则该帐户将不再存在.对文件和文件夹应用权限时,必须使用IIS AppPool\<pool name>
添加这些权限.您也不会在计算机用户管理器中看到这些池帐户.有关更多信息,请参见以下内容:
100-
这将是ASP的应用程序池标识.NETV4.0应用程序池.见上文DefaultAppPool
.
100 -
NETWORK SERVICE
帐户是Windows 2003上引入的内置身份.NETWORK SERVICE
是一个低特权帐户,您可以在该帐户下运行应用程序池和网站.在Windows 2003池中运行的网站仍然可以模拟该网站的匿名帐户(IUSR_u或您配置为匿名身份的任何内容).
在ASP.NET之前,你可以使用ASP.NET执行应用程序池帐户下的请求(通常为NETWORK SERVICE
).或者,您可以配置ASP.NET通过web.config
文件中的<identity impersonate="true" />
设置在本地模拟该网站的匿名帐户(如果该设置被锁定,则需要由machine.config
文件中的管理员完成).
设置<identity impersonate="true">
在使用共享应用程序池的共享主机环境中是常见的(结合部分信任设置以防止模拟帐户解开).
在IIS7.x/ASP.NET中,模拟控制现在通过站点的身份验证配置功能进行配置.因此,您可以配置为以池标识IUSR
或特定的自定义匿名帐户运行.
100
LOCAL SERVICE
帐户是服务控制管理器使用的内置帐户.它在本地计算机上具有最低权限集.它的使用范围相当有限:
100
你没有问这个问题,但我补充说是为了完整性.这是一个本地内置帐户.它拥有相当广泛的特权和信任.永远不要将网站或应用程序池配置为在此身份下运行.
In Practice:
实际上,保护网站安全的首选方法(如果网站拥有自己的应用程序池——这是IIS7 MMC中新网站的默认设置)是在Application Pool Identity
以下运行.这意味着在应用程序池的高级设置中将站点的标识设置为Application Pool Identity
:
然后在网站中配置身份验证功能:
右键单击并编辑匿名身份验证条目:
确保 Select "Application pool identity":
当您要应用文件和文件夹权限时,您可以授予应用程序池标识所需的任何权限.例如,如果要为ASP.NET v4.0
个池权限授予应用程序池标识,则可以通过资源管理器执行以下操作:
单击"判断名称"按钮:
或者,您可以使用ICACLS.EXE
实用程序执行此操作:
icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)
...或如果站点的应用程序池被称为BobsCatPicBlog
,那么:
icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)
我希望这有助于澄清问题.
Update:
我刚刚偶然发现了这个2009年的优秀答案,其中包含了大量有用的信息,非常值得一读:
The difference between the 'Local System' account and the 'Network Service' account?