因此,让我首先声明一下:我通常不会在域控制器上搭载 IIS,但这就是我所拥有的,并且在这种情况下我无法改变这一点。
我有一个需要在这里托管的 WCF Web 服务。我希望能够使用 IIS 中的应用程序池标识来授予文件系统权限以及组件服务中的启动和激活权限。当我尝试选择“IIS AppPool\DefaultAppPool”进行浏览时,我找不到该帐户。
有人知道这在 2008R2 域控制器上是否可以实现吗?
答案1
通过 Windows 2008R2 上的 UI 授予应用程序池标识的权限有时可能容易不起作用,但可以使用几个命令行工具来实现。
NTFS 权限:
使用ICACLS
命令行工具设置NTFS权限:
icacls c:\wwwroot /grant "IIS AppPool\DefaultAppPool":(CI)(OI)(M)
以上配置将DefaultAppPool
身份配置为具有c:\wwwroot
文件和文件夹继承的修改权限。在 UI 中它看起来像:
并在权限高级 UI 下:
DCOM 启动和激活以及访问权限:
同样,这里的用户界面在账户方面可能有点不稳定IIS AppPool\<ident>
,而且没有内置的命令行工具可以配置启动和激活权限和访问权限。你可以尝试在注册表中设置这些值但除非你知道如何创建序列化的 ACLLaunchPermission
和AccessPermission
这将会非常艰难。
但一切还没有结束。有一个工具叫做dcomperm.exe
,它作为示例项目包含在适用于 Windows 7 和 .NET Framework 4 的 Microsoft Windows SDK。
这位小伙子在这里写到了这一点:
你可以尝试自己构建它或者下载预构建的二进制文件来自他的 Microsoft Live SkyDrive。
要使用dcomperm.exe
它,您需要了解AppID
DCOM 应用程序。您可以通过在应用程序的 DCOM 配置属性的“常规”选项卡中找到它来执行此操作。例如,我选择了 IIS CertObj 库作为工作示例。:
您可以将光标放在应用程序 ID 字段中并选择整个字段,确保也包含花括号。
接下来打开命令行提示符(以管理员身份运行)。要授予应用程序池标识本地启动和本地激活权限,您需要执行:
DComPerm.exe -al {62B8CCBE-5A45-4372-8C4A-6A87DD3EDD60} set "IIS AppPool\DefaultAppPool" permit level:ll,la
在哪里:
-al
= 修改或列出启动和激活权限{62B8CCBE-5A45-4372-8C4A-6A87DD3EDD60}
= 我们从 DCOMCNFG UI 复制的应用程序 IDset "IIS AppPool\DefaultAppPool"
= 设置此身份permit
= 设置允许标志ll
= 本地发布la
= 本地激活
在 UI 中看起来如下所示:
答案2
看来,如果您运行的是 2008 之前的域功能级别,则无法从 GUI 解析内置的 IIS 帐户。
将域功能级别至少提升到 2008,或者尝试运行 Microsoft 提供的 JScriptKB946139
另请注意,不建议在域控制器上运行 Web 应用程序,原因如下:http://blogs.technet.com/b/abizerh/archive/2009/07/16/should-iis-be-installed-on-domain-controller.aspx
这是与 IIS 6/Windows 2k3 有关的问题,但其中一些问题仍然存在,例如 DCPROMO 问题