IIS7内建账号,应用程序池
在IIS7以前的IIS版本中有一个本地帐号,是在安装时创建的,叫做IUSR_MachineName。一旦启用匿名身份认证,这个IUSR_MachineName帐号就是IIS默认使用的身份(identity),它同时在FTP和HTTP服务中使用。另外还有一个叫做IIS_WPG的组,它是所有应用程序池帐号的容器。在IIS安装期间,必须保证所有的系统可用资源已经为IIS_WPG设置了适当的权限,当管理员创建一个新的应用程序池帐号时,只需要把新帐号(身份)加入这个组即可。
这个模型运转得很好,但是和其他任何设计一样,它们有他们的缺点,主要的缺点是IUSR_MachineName帐号和IIS_WPG组对于创建它们的系统来说都是本地的。 Windows中的每个帐号或组都有一个唯一的号码叫做SID(安全识别号Security Identifiers),这样就可以区别于其它的帐号或组。
而在IIS 7.0中:
1. IUSR内建帐号替代了IUSR_MachineName帐号
2. IIS_IUSRS内建组替代了IIS_WPG组
因为IUSR是一个内建帐号,它不再需要密码。逻辑上你可以认为它就是NETWORKSERVICE或LOCALSERVICE帐号。
应用程序池(w3wp.exe工作进程)是以我们指定的用户身份运行的,IIS需要使用这个用户身份访问各种系统资源和网络资源,如访问磁盘资源、执行某些系统功能、访问寄存器,以及访问网络资源等。IIS默认的用户身份是Network Service账号,这个账号对Web服务器和网络只有有限的访问权限,但是在运行标准Web网站时具有完全的权限。
IIS 7.0为用户提供了3种内置的账号,此外,我们还可以创建自定义账号。内置的账号包括:Network Service,Local Service ,Local System
- 应用程序池的默认用户是内置的Network Service账号。Network Service账号对本地计算机和网络资源只拥有最小访问权限。
- 内置的Local Service账号无法像Network Service账号那样访问网络资源,但是具有与Network Service账号类似的本地资源访问权限。
- 内置的Local System账号具有对本地系统的完全访问权限。但是,当我们使用Local System账号时,务必加以小心,尽可能地避免使用这个账号。当一个未授权的用户浏览服务器中的某个网站时,或者当这个未授权的用户上传自己的内容时,如果应用程序池以Local System账号身份运行,那么这个用户可以在Web服务器中执行任何操作。
需要使用应用程序池身份访问一个网络资源--如果需要访问一个网络资源,那么可以创建一个自定义的域用户,并将应用程序池的用户标识指派为这个自定义用户。这样一来,如果以这个应用程序池的用户标识运行的程序需要访问一个网络资源,那么,程序将使用这个自定义用户身份访问网络资源。
为每个网站新建一个应用程序池是一种合理的部署方式,特别是如果需要在一台服务器中运行多个Web网站时,这种做法尤其有益。这样可以确保每个Web应用程序仅在自己的进程中运行,这样,如果一个应用程序发生失效,那么也不会对其他网站造成影响。
应用程序池必须能够时常地回收使用,这样才能够解决应用程序挂起的问题,此外,这样还可以在添加新的文件、同时IIS无法知道已经添加了新文件的情况下,重新加载一个网站。