IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行账号,除了指定为LocalService,LocalSystem,NetWorkService这三种基本类型外,还新 增了一种ApplicationPoolIdentify html
win7的官方帮助上是这么说的:
动态建立“应用程序池标识”账户,所以,此账户对于您的应用程序来讲是最安全的。web
也就是说"ApplicationPoolIdentity"账号是系统动态建立的“虚拟”账号(说它是虚拟的,是由于在用户管理里看不到该用户或用户组,在命令行下输入net user也没法显示,但该账号又是确实存在的) windows
如何验证该账号确实是存在的的?打开任务管理器,观察一下:安全
w3wp.exe即iis进程,上图中高亮部分代表该iis进程正在以账号luckty运行(注意这里的luckty即为上图中的应用程序池名称)服务器
好了,搞清楚这个有什么用?测试
先来作一个测试,好比咱们在iis里新建一个站点,主目录设置为c:\2\,应用程序池就指定刚才图中的luckty网站
假如咱们在该站点的default.aspx.cs里写入这样一行代码 :spa
File.AppendAllText("C:\\TestDir\\1.txt",DateTime.Now.ToString());命令行
前提是c盘必须先建一个目录TestDir,同时除Administrator,System保留彻底控制权外,其它账号的权限都删除掉设计
运行后,会提示异常: 对路径“C:\TestDir\1.txt”的访问被拒绝。
缘由很明显:该站点运行时是以应用程序池(luckty)对应的虚拟账号运行的,而这个虚拟账号不具有c:\TestDir的访问权限
这种状况在web服务器(iis6)安全配置中很常见,好比咱们把图片上传目录,经常放在主目录以外,同时以虚拟目录形式挂于站点之下,另外在IIS6中不指定该目录任何执行权限 ,这样即便有人非法上传了asp/aspx木立刻去,也没法运行搞不成破坏!
言 归正传,要想让那一行测试代码正常运行,解决办法很简单,把虚拟账号的权限加入文件夹安全权限中便可,可是问题来了:这个虚拟账号咱们是不可见的,若是你 直接添加名为luckty的用户到文件夹安全账号里,根本通不过(提示找不到luckty用户),说明这个虚拟账号名称并非"luckty"
关键:手动输入 IIS AppPool\luckty (即IIS AppPool\应用程序池名),再肯定,这回ok了.
固然除了用"IIS AppPool\应用程序池名"外,windows内部还有一个特殊的用户组Authenticated Users,把这个组加入TestDir的安全权限账号里也能够,不过我的以为没有"IIS AppPool\应用程序池名"来得精确.
结束语:
IIS7.5的虚拟账号设计确实很棒,想一想传统IIS6的时候,为了把同一服务器上的各站点权限分开(以防止木马捣乱), 不得不建立一堆iuser_XXX,iwam_XXX账号并指定密码,再一个个站点分配过去,累死人!而虚拟账号设计则让这类管理轻松多了,也不用担忧密 码过于简单或过时问题。So,还在等什么,赶忙升级到win7/win2008 R2吧!
转载:http://www.cnblogs.com/yjmyzz/archive/2009/10/26/1590033.html
设置完后再设置
选择网站>IIS>身份验证>匿名身份验证>应用程序池标志