概述
 
在早期的IIS版本中,随着IIS的安装,系统会创建一个IUSR_MachineName用户。IIS启用匿名访问,就是通过此用户进行身份认证的,包括FTP匿名访问,HTTP匿名访问。
 
在创建IUSR_MachineName用户的同时,IIS_WPG用户组也会被创建出来。此用户组是一个包含所有预定义应用程序池标识用户的容器。在安装IIS的时候,系统里所有IIS需要用到的资源都被授予IIS_WPG用户组适当的权限。因此,当管理员为应用程序池标识为一个新创建的用户时,只需将该用户加入IIS_WPG用户组,即可保证应用程序池正常工作。
 
在这样的架构下,IIS可以很好地工作,但也有其不足之处:IUSR_MachineName用户和IIS_WPG用户组都是本地系统里的用户(组),同系统中的其他用户(组)一样,都有各自的唯一安全标识符SID。IIS的配置文件metabase.xml有调用IUSR_MachineName用户。由于此用户在其他计算机上有着不同的SID及名称,所以当我们把metabase.xml复制到其他计算机上时,IIS将无法正常工作。
 
另外,也正是由于SID的缘故,我们无法将IUSR_MachineName用户相关的ACL成功复制到其他计算机上。IIS_WPG用户组也一样。
 
IIS 7成功解决了这两个问题。
 
IIS 7的内置用户(组)突破了SID的限制,因为IIS7在调用这些内置用户(组)时,使用的是用户名而非SID。而且在不同语言版本的系统中,IIS 7的内置用户(组)都是IUSR(IIS_IUSRS)。其中,IUSR用于取代IUSR_MachineName,IIS_IUSRS用于取代IIS_WPG。
 
由于IUSR属于内置用户,所以使用时,不需要输入密码。你可以把它理解为NETWORK SERVICE或LOCAL SERVICE一类的用户。下面具体讲一下IUSR和IIS_IUSRS。
 
IUSR
 
在IIS 7中,IUSR用户取代了IUSR_MachineName用户。IUSR在认证时不需要密码。IIS 7的匿名身份认证,就是通过此用户进行的。打开IIS 7配置文件applicationHost.config ,可以看到这样一段设置:
 
<anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />
 
这表明IIS 7是通过IUSR来实现所有的匿名访问。这样一来,你就可以:
 
通过Explorer或cmd来设置IUSR的权限; 不用担心IUSR密码过期的问题; 将IUSR相关的ACL无缝迁移至其他计算机上。
 
当然,我们也可以将IIS 7的匿名身份标识为成其他用户:
 
1、打开IIS Manager,双击你想要设置的站点。 2、在功能视图中,双击身份验证。 3、选择匿名身份验证,点击编辑。 4、点击特定用户,设置。 5、输入该用户的用户名密码,确定。
 
IIS_IUSRS
 
IIS_IUSRS用户组取代了IIS_WPG用户组。此内置用户组拥有应用程序池访问系统资源所需的足够权限。因此,任何加入此用户组的用户,都可以成为一个合格的应用程序池标识用户。
 
和IUSR用户一样,IIS_IUSRS用户组也可以实现不同计算机之间的ACL复制。
 
当IIS启动工作进程时,需要用户来标识进程,而IIS_IUSRS用户组成员ApplicationPoolIdentity就是默认的标识。
 
ApplicationPoolIdentity并不是指一个用户,而是所有程序池默认标识用户的统称。这些用户与程序池是一一对应的。例如,程序池DefaultAppPool的ApplicationPoolIdentity是用IISAPPPOOL\DefaultAppPool。
 
因此,有了IIS_IUSRS用户组,管理应用程序池标识就变得简单多了,至少你不需要再为不同程序池下的站点设置不同的程序池标识用户权限。
 
原文地址:

【转】IUSR和IIS_IUSRS的更多相关文章

  1. IUSR和IIS_IUSRS

    在早期的IIS版本中,随着IIS的安装,系统会创建一个IUSR_MachineName用户.IIS启用匿名访问,就是通过此用户进行身份认证的,包括FTP匿名访问,HTTP匿名访问.   在创建IUSR ...

  2. 常见.NET功能代码汇总

    1,在Web上修改指定文件位置的Web.config 这里需要使用 WebConfigurationManager 类,但必须使用WebConfigurationFileMap类来指定文件位置,看代码 ...

  3. IIS报500.0错误

    IIS安全里面配置:Everyone.IUSR.IIS_IUSRS 参考地址:http://blog.chinaunix.net/uid-21375345-id-3213631.html

  4. win2008 服务器文件夹权限配置

    通过控制文件夹权限来提高站点的安全性. 这一篇权限设置包括二个方面,一个是系统目录.盘符的权限,一个是应用程序的上传文件夹权限设置. 系统目录 确保所有盘符都是NTFS格式,如果不是,可以用命令 co ...

  5. Win7下VS2010、IIS7配置常见问题收集

    一 在Win7下应按什么次序安装vs2010和iis7 win7推荐先安装iis7,再安装vs2010:如果次序反了,必须注册iis才可以用. IIS中ASP.NET的版本号此时可选的有1.1.2.0 ...

  6. IIS发布asp.net mvc项目(asp.net core也是一样)

    因为之前都是利用其他的工具在linux上面进行发布,导致现在忘记了在IIS上面怎么发布,现在就记录下来,以防不时之需吧 第一步: 在vs里面进行项目发布:指定好发布的位置,点击发布就好了 第二步:右击 ...

  7. 解决win10下IIS下"对路径...的访问被拒绝

    解决方案如下: 1.右击文件夹,安全,添加IUSR和IIS_IUSRS安全控制权限. 2.右击文件夹,常规,查看是否只读.将只读属性去掉.

  8. 安装Discuz

    1.下载Discuz 版本文件 http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip 2.下载PHP http://window ...

  9. [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败

    今天打开网站时,突然报这个错误,平时都好好的 Cannot open database "JMECC" requested by the login. The login fail ...

随机推荐

  1. Django 中间件简介

    Django 中间件简介 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. ...

  2. Apache 日志管理

    日志参数 %% 百分号(Apache2.0.44或更高的版本) %a 远端IP地址 %A 本机IP地址 %B 除HTTP头以外传送的字节数 %b 以CLF格式显示的除HTTP头以外传送的字节数,也就是 ...

  3. Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议

    一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...

  4. UDP协议----简单的CS模型实现

    UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺 ...

  5. SpringBoot 加载配置文件

    1.application.properties或application.yaml是SpringBoot默认的配置文件. 可以通过@Value注解 配合 ${......}来读取配置在属性文件中的内容 ...

  6. SubSets,SubSets2, 求数组所有子集

    问题描述: Given a set of distinct integers, nums, return all possible subsets. Note: The solution set mu ...

  7. javascript onclick 函数不执行

    今天被这个问题搞伤了. 原本是要给table中的元素添加onclick事件处理函数,刚开始还可以,后来就不行了,百试不得其解,反复检查,程序也没问题,耗了一个多小时,偏偏我就不信电脑会扯拐,就要看看还 ...

  8. JNI_Z_08_创建Java对象

    1.步骤 : (1).获取 jclass (2).获取 构造函数的 method id (方法的名称始终为"<init>") (3).创建Java对象的两种方式: (3 ...

  9. python time 和 datetime 模块的简介

    时间处理 time 和 datetime import timeimport datetimeprint time.time() #时间戳显示为1508228106.49print time.strf ...

  10. 不能在Python Console中运行pytest

    在Python Console中运行pytest发现报错了 这是为什么?因为Python Console已经是进入python之后的环境,就像在python自带的IDLE中运行pytest pytes ...