在Windows Server 2008下使用ASP。NET 4.0安装了一大堆相关的用户帐户,我不知道哪个是哪个,它们有什么不同,哪个才是我的应用程序运行的。下面是一个列表:
IIS_IUSRS IUSR DefaultAppPool ASP。净v4.0 NETWORK_SERVICE 本地服务。
什么是什么?
在Windows Server 2008下使用ASP。NET 4.0安装了一大堆相关的用户帐户,我不知道哪个是哪个,它们有什么不同,哪个才是我的应用程序运行的。下面是一个列表:
IIS_IUSRS IUSR DefaultAppPool ASP。净v4.0 NETWORK_SERVICE 本地服务。
什么是什么?
当前回答
这是一个非常好的问题,遗憾的是,许多开发人员对IIS/ASP没有提出足够多的问题。作为web开发人员和设置IIS的背景下的NET安全性。....
要涵盖列出的身份:
IIS_IUSRS:
这类似于旧的IIS6 IIS_WPG组。它是一个内置组,其安全性已配置,以便该组的任何成员都可以充当应用程序池标识。
IUSR:
此帐户类似于旧的IUSR_<MACHINE_NAME>本地帐户,该帐户是IIS5和IIS6网站的默认匿名用户(即通过站点属性的目录安全选项卡配置的)。
有关IIS_IUSRS和IUSR的更多信息,请参见:
了解iis7中内置的用户和组帐户
DefaultAppPool:
If an application pool is configured to run using the Application Pool Identity feature then a "synthesised" account called IIS AppPool\<pool name> will be created on the fly to used as the pool identity. In this case there will be a synthesised account called IIS AppPool\DefaultAppPool created for the life time of the pool. If you delete the pool then this account will no longer exist. When applying permissions to files and folders these must be added using IIS AppPool\<pool name>. You also won't see these pool accounts in your computers User Manager. See the following for more information:
应用程序池标识
ASP。NET v4.0: -
这将是ASP的应用程序池标识。NET v4.0应用程序池。参见上面的DefaultAppPool。
网络服务:-
NETWORK SERVICE帐户是Windows 2003上引入的内置标识。NETWORK SERVICE是一个低特权帐户,您可以在此帐户下运行您的应用程序池和网站。在Windows 2003池中运行的网站仍然可以模拟该站点的匿名帐户(IUSR_或任何您配置为匿名身份的帐户)。
在ASP。在Windows 2008之前,你可以使用asp.net。NET在应用程序池帐户(通常是NETWORK SERVICE)下执行请求。或者,您可以配置ASP。NET通过web中的<identity impersonate="true" />设置模拟站点的匿名帐户。本地配置文件(如果该设置被锁定,则需要由机器中的管理员完成。配置文件)。
设置<identity impersonate="true">在使用共享应用程序池的共享主机环境中很常见(与部分信任设置一起使用,以防止撤消模拟帐户)。
在IIS7.x / ASP。NET模拟控制现在通过站点的身份验证配置特性进行配置。因此,您可以配置为作为池标识、IUSR或特定的自定义匿名帐户运行。
本地服务:
LOCAL SERVICE帐户是服务控制管理器使用的内置帐户。它具有本地计算机上的最小权限集。它的使用范围相当有限:
LocalService帐户
本地系统:
你没有问这个,但我补充了完整。这是一个本地内置帐户。它拥有相当广泛的特权和信任。永远不要将网站或应用程序池配置为在此标识下运行。
LocalSystem帐户
在实践中:
在实践中,保护网站的首选方法(如果网站有自己的应用程序池——这是IIS7的MMC中新网站的默认值)是在应用程序池标识下运行。这意味着在应用程序池的高级设置中将站点的标识设置为应用程序池标识:
在网站中,你应该配置身份验证功能:
右击并编辑匿名身份验证条目:
确保选择“应用程序池标识”:
当您应用文件和文件夹权限时,您授予应用程序池标识所需的任何权限。例如,如果您为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)
更新:
我刚刚偶然发现了2009年的一个很好的答案,其中包含了很多有用的信息,非常值得一读:
https://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-acco/510225#510225
其他回答
这是一个非常好的问题,遗憾的是,许多开发人员对IIS/ASP没有提出足够多的问题。作为web开发人员和设置IIS的背景下的NET安全性。....
要涵盖列出的身份:
IIS_IUSRS:
这类似于旧的IIS6 IIS_WPG组。它是一个内置组,其安全性已配置,以便该组的任何成员都可以充当应用程序池标识。
IUSR:
此帐户类似于旧的IUSR_<MACHINE_NAME>本地帐户,该帐户是IIS5和IIS6网站的默认匿名用户(即通过站点属性的目录安全选项卡配置的)。
有关IIS_IUSRS和IUSR的更多信息,请参见:
了解iis7中内置的用户和组帐户
DefaultAppPool:
If an application pool is configured to run using the Application Pool Identity feature then a "synthesised" account called IIS AppPool\<pool name> will be created on the fly to used as the pool identity. In this case there will be a synthesised account called IIS AppPool\DefaultAppPool created for the life time of the pool. If you delete the pool then this account will no longer exist. When applying permissions to files and folders these must be added using IIS AppPool\<pool name>. You also won't see these pool accounts in your computers User Manager. See the following for more information:
应用程序池标识
ASP。NET v4.0: -
这将是ASP的应用程序池标识。NET v4.0应用程序池。参见上面的DefaultAppPool。
网络服务:-
NETWORK SERVICE帐户是Windows 2003上引入的内置标识。NETWORK SERVICE是一个低特权帐户,您可以在此帐户下运行您的应用程序池和网站。在Windows 2003池中运行的网站仍然可以模拟该站点的匿名帐户(IUSR_或任何您配置为匿名身份的帐户)。
在ASP。在Windows 2008之前,你可以使用asp.net。NET在应用程序池帐户(通常是NETWORK SERVICE)下执行请求。或者,您可以配置ASP。NET通过web中的<identity impersonate="true" />设置模拟站点的匿名帐户。本地配置文件(如果该设置被锁定,则需要由机器中的管理员完成。配置文件)。
设置<identity impersonate="true">在使用共享应用程序池的共享主机环境中很常见(与部分信任设置一起使用,以防止撤消模拟帐户)。
在IIS7.x / ASP。NET模拟控制现在通过站点的身份验证配置特性进行配置。因此,您可以配置为作为池标识、IUSR或特定的自定义匿名帐户运行。
本地服务:
LOCAL SERVICE帐户是服务控制管理器使用的内置帐户。它具有本地计算机上的最小权限集。它的使用范围相当有限:
LocalService帐户
本地系统:
你没有问这个,但我补充了完整。这是一个本地内置帐户。它拥有相当广泛的特权和信任。永远不要将网站或应用程序池配置为在此标识下运行。
LocalSystem帐户
在实践中:
在实践中,保护网站的首选方法(如果网站有自己的应用程序池——这是IIS7的MMC中新网站的默认值)是在应用程序池标识下运行。这意味着在应用程序池的高级设置中将站点的标识设置为应用程序池标识:
在网站中,你应该配置身份验证功能:
右击并编辑匿名身份验证条目:
确保选择“应用程序池标识”:
当您应用文件和文件夹权限时,您授予应用程序池标识所需的任何权限。例如,如果您为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)
更新:
我刚刚偶然发现了2009年的一个很好的答案,其中包含了很多有用的信息,非常值得一读:
https://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-acco/510225#510225