IIS/ASP的所有用户帐户是什么?NET和它们有什么不同?

在Windows Server 2008下使用ASP。NET 4.0安装了一大堆相关的用户帐户,我不知道哪个是哪个,它们有什么不同,哪个才是我的应用程序运行的。下面是一个列表:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP。净v4.0
  • NETWORK_SERVICE
  • 本地服务。

什么是什么?

239836 次浏览

这是一个非常好的问题,遗憾的是,许多开发人员对IIS/ASP没有提出足够多的问题。作为web开发人员和设置IIS的背景下的NET安全性。....

要涵盖列出的身份:

IIS_IUSRS:

这类似于旧的IIS6 IIS_WPG组。它是一个内置组,其安全性已配置,以便该组的任何成员都可以充当应用程序池标识。

IUSR:

这个帐户类似于旧的IUSR_<MACHINE_NAME>本地帐户,它是IIS5和IIS6网站的默认匿名用户(即通过站点属性的目录安全选项卡配置的)。

有关IIS_IUSRSIUSR的更多信息,请参见:

了解iis7中的内置用户和组帐户

DefaultAppPool:

如果一个应用程序池被配置为使用应用程序池标识特性运行,那么一个名为IIS AppPool\<pool name>的“合成”帐户将被动态创建,用作池标识。在这种情况下,将为池的生命周期创建一个名为IIS AppPool\DefaultAppPool的合成帐户。如果您删除池,则该帐户将不再存在。当对文件和文件夹应用权限时,必须使用IIS AppPool\<pool name>添加这些权限。您也不会在计算机的用户管理器中看到这些池帐户。更多信息请参见以下内容:

应用程序池标识符 .

ASP.NET v4.0: -

这将是ASP的应用程序池标识。NET v4.0应用程序池。参见上面的DefaultAppPool

NETWORK SERVICE: -

NETWORK SERVICE帐户是Windows 2003引入的内置标识。NETWORK SERVICE是一个低特权帐户,在这个帐户下你可以运行你的应用程序池和网站。在Windows 2003池中运行的网站仍然可以模拟该站点的匿名帐户(IUSR_或任何您配置为匿名身份的帐户)。

在ASP。在Windows 2008之前,你可以使用asp.net。NET在应用程序池帐户下执行请求(通常是NETWORK SERVICE)。或者,您可以配置ASP。NET通过web.config文件中的<identity impersonate="true" />设置在本地模拟站点的匿名帐户(如果该设置被锁定,则需要由machine.config文件中的管理员完成)。

设置<identity impersonate="true">在使用共享应用程序池的共享托管环境中是很常见的(与部分信任设置一起使用,以防止被模拟帐户的解除)。

在IIS7.x / ASP。NET模拟控制现在通过站点的身份验证配置特性进行配置。因此,您可以配置为作为池标识、IUSR或特定的自定义匿名帐户运行。

LOCAL SERVICE:

LOCAL SERVICE帐户是服务控制管理器使用的内置帐户。它具有本地计算机上的最小权限集。它的使用范围相当有限:

LocalService Account

LOCAL SYSTEM:

你没有问这个,但我补充了完整。这是一个本地内置帐户。它拥有相当广泛的特权和信任。永远不要将网站或应用程序池配置为在此标识下运行。

LocalSystem Account

在实践中:

在实践中,保护网站的首选方法(如果网站有自己的应用程序池-这是IIS7的MMC中新网站的默认值)是在Application Pool Identity下运行。这意味着在应用程序池的高级设置中将站点的标识设置为Application Pool Identity:

enter image description here

在网站中,你应该配置身份验证功能:

enter image description here

右击并编辑匿名身份验证条目:

enter image description here

确保“应用程序池标识”被选中:

enter image description here

当您应用文件和文件夹权限时,您授予应用程序池标识所需的任何权限。例如,如果你为ASP.NET v4.0池权限授予应用程序池标识,那么你可以通过资源管理器来实现:

enter image description here

点击“核对名称”按钮:

enter image description here

或者你可以使用ICACLS.EXE实用程序来做到这一点:

icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)

...or...if you site's application pool is called BobsCatPicBlogthen:

icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)

我希望这能帮你理清头绪。

更新:

我刚刚偶然发现了2009年的一个很好的答案,其中包含了很多有用的信息,非常值得一读:

'本地系统'帐户和网络服务'账户?< / >