在Windows Server 2008下使用ASP。NET 4.0安装了一大堆相关的用户帐户,我不知道哪个是哪个,它们有什么不同,哪个才是我的应用程序运行的。下面是一个列表:
什么是什么?
这是一个非常好的问题,遗憾的是,许多开发人员对IIS/ASP没有提出足够多的问题。作为web开发人员和设置IIS的背景下的NET安全性。....
要涵盖列出的身份:
IIS_IUSRS:
这类似于旧的IIS6 IIS_WPG组。它是一个内置组,其安全性已配置,以便该组的任何成员都可以充当应用程序池标识。
IIS_WPG
IUSR:
这个帐户类似于旧的IUSR_<MACHINE_NAME>本地帐户,它是IIS5和IIS6网站的默认匿名用户(即通过站点属性的目录安全选项卡配置的)。
IUSR_<MACHINE_NAME>
有关IIS_IUSRS和IUSR的更多信息,请参见:
IIS_IUSRS
IUSR
了解iis7中的内置用户和组帐户
DefaultAppPool:
如果一个应用程序池被配置为使用应用程序池标识特性运行,那么一个名为IIS AppPool\<pool name>的“合成”帐户将被动态创建,用作池标识。在这种情况下,将为池的生命周期创建一个名为IIS AppPool\DefaultAppPool的合成帐户。如果您删除池,则该帐户将不再存在。当对文件和文件夹应用权限时,必须使用IIS AppPool\<pool name>添加这些权限。您也不会在计算机的用户管理器中看到这些池帐户。更多信息请参见以下内容:
IIS AppPool\<pool name>
IIS AppPool\DefaultAppPool
应用程序池标识符 .
ASP.NET v4.0: -
ASP.NET v4.0:
这将是ASP的应用程序池标识。NET v4.0应用程序池。参见上面的DefaultAppPool。
DefaultAppPool
NETWORK SERVICE: -
NETWORK SERVICE:
NETWORK SERVICE帐户是Windows 2003引入的内置标识。NETWORK SERVICE是一个低特权帐户,在这个帐户下你可以运行你的应用程序池和网站。在Windows 2003池中运行的网站仍然可以模拟该站点的匿名帐户(IUSR_或任何您配置为匿名身份的帐户)。
NETWORK SERVICE
在ASP。在Windows 2008之前,你可以使用asp.net。NET在应用程序池帐户下执行请求(通常是NETWORK SERVICE)。或者,您可以配置ASP。NET通过web.config文件中的<identity impersonate="true" />设置在本地模拟站点的匿名帐户(如果该设置被锁定,则需要由machine.config文件中的管理员完成)。
web.config
<identity impersonate="true" />
machine.config
设置<identity impersonate="true">在使用共享应用程序池的共享托管环境中是很常见的(与部分信任设置一起使用,以防止被模拟帐户的解除)。
<identity impersonate="true">
在IIS7.x / ASP。NET模拟控制现在通过站点的身份验证配置特性进行配置。因此,您可以配置为作为池标识、IUSR或特定的自定义匿名帐户运行。
LOCAL SERVICE:
LOCAL SERVICE帐户是服务控制管理器使用的内置帐户。它具有本地计算机上的最小权限集。它的使用范围相当有限:
LOCAL SERVICE
LocalService Account
LOCAL SYSTEM:
你没有问这个,但我补充了完整。这是一个本地内置帐户。它拥有相当广泛的特权和信任。永远不要将网站或应用程序池配置为在此标识下运行。
LocalSystem Account
在实践中:
在实践中,保护网站的首选方法(如果网站有自己的应用程序池-这是IIS7的MMC中新网站的默认值)是在Application Pool Identity下运行。这意味着在应用程序池的高级设置中将站点的标识设置为Application Pool Identity:
Application Pool Identity
在网站中,你应该配置身份验证功能:
右击并编辑匿名身份验证条目:
确保“应用程序池标识”被选中:
当您应用文件和文件夹权限时,您授予应用程序池标识所需的任何权限。例如,如果你为ASP.NET v4.0池权限授予应用程序池标识,那么你可以通过资源管理器来实现:
ASP.NET v4.0
点击“核对名称”按钮:
或者你可以使用ICACLS.EXE实用程序来做到这一点:
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:
BobsCatPicBlog
icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)
我希望这能帮你理清头绪。
更新:
我刚刚偶然发现了2009年的一个很好的答案,其中包含了很多有用的信息,非常值得一读:
'本地系统'帐户和网络服务'账户?< / >