[翻译] 理解IIS7的用户和组

news/2024/12/26 1:46:03
原文地址: http://www.iis.net/1026/SinglePageArticle.ashx
翻译:Tony Qu (来自BluePrint翻译团队)

作者: Vikas Malhotra
最后更新时间:2006年9月12日,星期二,上午11:48

介绍
在以前的IIS版本中有一个本地帐号,是在安装时创建的,叫做IUSR_MachineName。一旦启用匿名身份认证,这个IUSR_MachineName帐号就是IIS默认使用的身份(identity),它同时在FTP和HTTP服务中使用。另外还有一个叫做IIS_WPG的组,它是所有应用程序池帐号的容器。在IIS安装期间,必须保证所有的系统可用资源已经为IIS_WPG设置了适当的权限,当管理员创建一个新的应用程序池帐号时,只需要把新帐号(身份)加入这个组即可。

这个模型运转得很好,但是和其他任何设计一样,它们有他们的缺点,主要的缺点是IUSR_MachineName帐号和IIS_WPG组对于创建它们的系统来说都是本地的。 Windows中的每个帐号或组都有一个唯一的号码叫做SID(安全识别号),这样就可以区别于其它的帐号或组。我们仅使用SID来创建创建ACL。作为以前版本的IIS设计的组成部分,我们将IUSR_MachineName包含在了metabase.xml文件中,如果你尝试从一台机器拷贝metabase.xml到另一台机器上,它并不会马上运转起来,因为另一台机器上的帐号使用的名字是不同的。另外,你不能仅用xcopy /o来拷贝ACL,因为不同机器上的SID也是不同的。一个解决方法是使用域帐号,但是你需要在你的架构中添加一个活动目录。IIS_WPG组也有同样的权限问题,如果你在一个机器的文件系统上为IIS_WPG组设置ACL,使用xcopy /o来拷贝ACL到另一台机器上是无法成功的。IIS了解了这一问题,并通过在IIS7.0中使用内建的帐号和组对其作了改进。

内建的帐号和组是由操作系统保证的,这样就可以保证有一个唯一的SID,IIS甚至做得更好,它保证了新的帐号名称和组名称永远不会被本地化。例如,无论你安装的是那种语言版本的Windows,IIS帐号名称将永远是IUSR,而组名称将永远是IIS_IUSRS。

总的来说,在IIS 7.0中:

IUSR内建帐号替代了IUSR_MachineName帐号
IIS_IUSRS内建组替代了IIS_WPG组

因为IUSR是一个内建帐号,它不再需要密码。逻辑上你可以认为它就是NETWORKSERVICE或LOCALSERVICE帐号。IUSR帐号和IIS_IUSRS组将在下面的章节中做进一步介绍。

理解新的IUSR帐号
正如上面所说的,在IIS 7.0中IUSR帐号将替代IUSR_MachineName 帐号。仅在安装FTP服务器时,IUSR_MachineName 帐号才会被创建和使用。如果不安装FTP,那么这个帐号将永远不会被创建。

这个内建帐号并不需要密码,当启用匿名身份认证时,该帐号并将被作为默认的用户身份使用。如果你看一看applicationHost.config文件,你会发现下面的定义:
  < anonymousAuthentication  enabled ="true"  userName ="IUSR"  defaultLogonDomain =""   />


这就告诉了IIS对所有的匿名身份认证请求使用新的内建帐号。这样做的最大优点在于,我们现在可以:

* 使用Windows Explorer或许多其他命令行工具为IUSR设置文件系统权限
* 不用再担心这个帐号的密码会过期
* 使用xcopy /o无缝拷贝文件以及它们的所有权和ACL信息到不同的机器上

有一点要重点提一下:IUSR帐号和LOCALSERVICE帐号在方式上很相似,它是在网络上匿名工作。NETWORKSERVICE和LOCALSYSTEM 可以以机器身份工作,但IUSR则不是,因为它是一种特权的升迁。如果你希望有一个拥有网络访问权限的匿名帐号,你就需要创建一个新的用户帐号,并手工设置用户名和密码,就像你以前设置匿名身份验证一样。要在IIS Manager中实现这一点,你可以:

* 点击Start按钮,键入"INetMgr.exe"并按回车(如果弹出提示框,请按Continue来提升权限)
* 点击Connection中机器名称旁边的"+"按钮
* 在IIS Manager中双击你要管理的站点
* 双击Feature Name标题下面的Authentication
* 选择Anonymous Authentication,点击右侧Task标题下面的Edit,弹出Specify Credentials dialog(指定认证对话框)
* 点击Specific User选项,然后按下"Set"按钮
* 输入想设的用户名和密码,按OK

理解新的IIS_IUSRS组
正如前面所提到的,IIS_IUSRS组是用来替代IIS_WPG组的,它已经拥有了所有的文件和系统资源的访问权限,因此如果一个帐号被添加到该组中,它将以应用程序池身份无缝工作。

由于与内建帐号配合工作,该内建组可以解决几个xcopy的部署问题。如果你在文件上为IIS_WPG设置权限(在IIS6中这是可以的),并尝试把这些文件拷贝另外一个Windows系统中,由于组SID在不同机器上是不同的,站点设置可能被破坏。

在IIS7中,由于组SID在所有Longhorn系统中是相同的。当你从一台机器向令一台机器移动文件时,使用'xcopy /o'可以保留ACL和拥有权信息,这使得xcopy部署变得简单的多!

客户们的第二个请求是“一旦我们配置了应用程序池身份,我们需要IIS来帮我们做所有必要的修改”。我们接受了这个意见,并使这一过程在IIS7.0中变得更加简单。当IIS启动一个工作者进程(worker process)时,需要创建一个供该进程使用的令牌(token)。现在,当我们创建这个令牌时,IIS将自动在运行时添加IIS_IUSRS membership到工作者进程令牌中,这么做能够让账号以应用程序池身份运行,而不需要显示地作为IIS_IUSRS组的一部分。我们相信这一修改将帮助你更轻易地设置系统,并让您的整体体验更好。

如果你想禁用这个特性并手工添加账号到IIS_IUSRS组,你可以通过设置manualGroupMembership值为true来仅用这一特性。下面是关于如何设置defaultAppPool来禁用这一特性的例子:

< applicationPools >
    
< add  name ="DefaultAppPool" >
        
< processModel  manualGroupMembership ="true"   />
    
add>
applicationPools>
 



http://www.niftyadmin.cn/n/3656353.html

相关文章

Windows下的Dos命令大全

copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件&#xff08;所有文件&#xff09;至本地C&#xff1a; xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树&#xff0c;用参数/Y将不提示覆盖相同文件 tftp -i 自己IP(用…

[翻译]VISTA音量控制

原文&#xff1a;https://blogs.msdn.com/larryosterman/archive/2005/12/15/504158.aspx作者&#xff1a;larryosterman翻译&#xff1a;Tony Qu (来自BluePrint翻译团队)在Vista之前&#xff0c;所有对应用程序的控制都是系统级的——当你用wave volumn API改变音量的时候&am…

MFC自定义消息响应函数

该文章时转载自&#xff1a;http://blog.csdn.net/foreverhuylee/article/details/25394401 手动添加消息和消息处理函数 1、由于是用户自己定义的消息&#xff0c;所以首先要定义一个消息宏如下&#xff1a; #define WM_MYMESSAGE (WM_USER1) //在*.h文件里添加 注意&am…

[翻译]:Windows Vista的秘密1: 在这里打开命令行

原文地址&#xff1a;http://blogs.msdn.com/tims/archive/2006/09/18/windows-vista-secret-1-open-command-prompt-here.aspx作者&#xff1a;Tim Sneath翻译&#xff1a;Tony Qu (来自BluePrint翻译团队)做为一个程序员&#xff0c;我不知道你的工作流程是怎样的&#xff0c…

[翻译]Windows Vista的秘密4: 禁用UAC

原文地址&#xff1a;http://blogs.msdn.com/tims/archive/2006/09/20/763275.aspx作者&#xff1a;Tim Sneath翻译&#xff1a;Tony Qu&#xff08;来自BluePrint翻译团队&#xff09;如果你是本blog的常客&#xff0c;我敢打赌你应该会把自己认为是很强的用户&#xff0c;你为…

控制台界面控制(三):设置窗口标题

本文为转载文档&#xff0c;源文档链接&#xff1a;http://blog.csdn.net/bnb45/article/details/7981421 相关信息 字符编码 UNICODE&#xff1a;如果只是用英文字母就能代表足够多的意思&#xff0c;UNICODE就不会出现了。著名的 ASCII 码已经可以表示大部分信息&#xff0c;…

控制台界面控制(四)

本文为转载文档&#xff0c;源文档链接&#xff1a;http://blog.csdn.net/bnb45/article/details/7983562 设置光标位置 [cpp] view plaincopy // ---- 设置光标位置 void CMyConsole::Goto(short x, short y) { COORD pos {x, y}; SetConsoleCursorPosition(…

Javascript:检测FlashPlayer版本的函数

functiongetFlashVer() {//获得flashplayer的版本 googlevarf"",nnavigator; if(n.plugins &&n.plugins.length) { for(varii0;ii<n.plugins.length;ii) { if(n.plugins[ii].name.indexOf(Shockwave Flash)!-1) { fn.plugins[ii].description.spli…