介绍 IIS 7.5 的应用程序池与新增的「虚拟帐户」特性

2019-10-16 16:15:47王冬梅

IIS 7.5 :: Application Pools :: Advanced Settings :: Application Pool Identity

当我们的 ASP.NET 程式需要上传或写入档案到 Web Server 时,就必须要设定目录的 NTFS 权限让工作处理程序能够写入档案,在以往我们要设定的是 NETWORK SERVICE 帐户,但现在要输入的却是一组特殊的「虚拟帐户」,我们在档案总管设定权限时「虚拟帐户」是无法被选取的,只能手动输入这组特殊的帐户名称,IIS 应用程式集区的虚拟帐户名称表示方式为:【IIS AppPool应用程式集区名称】,例如内建的应用程式名称就称为: 【IIS AppPoolDefaultAppPool】,如果你新增了一个应用程式集区名为 MyAppPool 的话,虚拟帐户的表示法就是:【IIS AppPoolMyAppPool】。

如下图示,在设定 NTFS 权限选取使用者时需先手动输入虚拟帐户帐号

Select Users or Groups

当按下 [检查名称] 或 [Check Names] 时,名称若出现「底线」就代表该「虚拟帐户」是有效的:

Select Users or Groups

最后,我们看一下 [工作管理员] 中呈现的工作处理程序 (w3wp.exe) 的执行身份也是虚拟帐户DefaultAppPool 这个身份。

Windows Task Manager

我觉得虚拟帐户这个概念实在是太棒了,以后在设定多个站台时也不需要新增一堆无意义的系统帐户或人工管理这堆系统帐户的密码与到期日,对于系统的可管理性也增强了,当你不需要虚拟帐户时,也可以选择原本的 NetworkService 或自行指定帐户执行。

---

虚拟帐户虽然在 Windows 7 与 Windows Server 2008 R2 才出现,但 Windows Server 2008 在更新到 Service Pack 2 (SP2) 之后也会支援虚拟帐户的设定,只是经我实测后发现 Windows Server 2008 SP2 虽然有支援虚拟帐户,在 IIS 7 的应用程式集区 [进阶设定] 视窗中也会看到 ApplicationPoolIdentity 的选项,但在档案总管中设定 NTFS 权限时却无法透过 [检查名称] 或 [Check Names] 按钮进行名称检查,因此你将无法透过 GUI 介面设定授权给虚拟帐户,只能透过 icacls 工具设定档案或目录权限,使用范例如下: