如何使用 AppCmd 配置 WebDAV 设置
介绍
Microsoft 发布了一个全新的 WebDAV 扩展模块,已针对 Windows Server© 2008 上的 Internet Information Services 7.0 (IIS 7.0) 完全重写。 这个新的 WebDAV 扩展模块合并了许多新功能,使 Web 作者能够比以前更好地发布内容,并为 Web 管理员提供更多的安全性和配置选项。 Microsoft 发布了适用于 Windows Server® 2008 的 WebDAV 扩展模块的更新,该模块提供共享和独占锁支持,以防止因覆盖而导致更新丢失。
本文档将指导你使用 IIS 7.0 中的新 AppCmd.exe 实用工具从命令行或批处理脚本配置 WebDAV 设置。
先决条件
完成本文中的程序需要具有以下各项:
必须在服务器上安装 IIS 7.0,并且必须配置以下内容:
- IIS 7.0 安装时创建的默认网站必须仍然存在。
必须安装了新的 WebDAV 扩展模块。 有关安装新 WebDAV 模块的信息,请参阅以下文档:
注意
需要确保使用完全管理权限来执行本文档中的步骤。 为此,最好采用以下两种方法之一:
- 使用本地“管理员”帐户登录到计算机。
- 如果使用具有管理权限的帐户(不是本地“管理员”帐户)登录,请使用“以管理员身份运行”选项打开 IIS 管理器和所有命令提示符会话。
上述条件必须满足,因为 Windows Server 2008 中的用户帐户控制 (UAC) 安全组件将阻止对 IIS 7.0 配置设置的管理访问。 有关 UAC 的详细信息,请参阅以下文档:
注意
默认情况下,请求筛选设置可能会阻止 WebDAV 创作中的多种文件类型。 使用 IIS 管理器 UI 配置 WebDAV 时,请求筛选设置会自动更新,以便取消阻止 WebDAV 创作。 但是,如果选择使用 IIS 管理器 UI 以外的任何方式配置 WebDAV,请参阅如何使用请求筛选配置 WebDAV分步演练。
基本 AppCmd 概念
AppCmd.exe 是用于管理 IIS 7.0 的新命令行工具。 在许多方面,可以将其视为以前 IIS 版本中 adsutil.vbs 脚本的替代项。 AppCmd.exe 支持各种对象的广泛命令开关,因此可以轻松地在批处理文件中编写脚本来配置无数 IIS 设置。 (注意:AppCmd.exe 实用工具位于 %WinDir%\System32\InetSrv folder
。)
AppCmd.exe 的一般语法为:
AppCmd (command) (object-type) <identifier> </parameter1:value1 ...>
AppCmd.exe 还提供广泛的命令行帮助支持,可以使用下列方法之一访问这些支持:
AppCmd /?
AppCmd (object) /?
AppCmd (command) (object) /?
命令列表取决于对象,支持以下对象:
Object | 说明 |
---|---|
SITE | 虚拟站点的管理 |
APP | 应用程序的管理 |
VDIR | 虚拟目录的管理 |
APPPOOL | 应用程序池的管理 |
CONFIG | 常规配置部分的管理 |
WP | 工作进程的管理 |
请求 | HTTP 请求的管理 |
MODULE | 服务器模块的管理 |
BACKUP | 服务器配置备份的管理 |
TRACE | 处理失败的请求跟踪日志 |
例如,可以使用以下语法通过 SITE 对象列出服务器上配置的网站:
AppCmd list site
同样地,可以使用以下语法通过 APPPOOL 对象列出服务器上配置的应用程序池:
AppCmd list apppool
还可以使用 AppCmd 通过 SITE 对象设置各种配置设置的值,并且可以使用以下命令通过以下语法列出默认网站的可用设置:
AppCmd set site "Default Web Site" /?
若要列出特定路径的配置设置,请使用 CONFIG 对象,如以下示例所示:
AppCmd list config "Default Web Site/" /section:system.webServer/security/authentication/windowsAuthentication
CONFIG 对象还可用于设置配置设置,如以下示例所示:
AppCmd set config "Default Web Site/" /section:system.webServer/security/authentication/windowsAuthentication /enabled:true
还可以控制 AppCmd 将使用“/commit:”命令行参数指定写入设置的位置。 例如,本文档的后面部分将介绍在默认网站上启用 WebDAV 的以下命令:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost
注意
此命令为默认网站启用 WebDAV,并将该设置写入 ApplicationHost.config 文件。
AppCmd 是一个极其强大的实用工具,实际上,这么短的篇幅要涵盖的内容太多了,因此有关熟悉AppCmd.exe 的详细信息,请参阅 IIS.NET 网站上的以下文章:
也就是说,我们继续在服务器上配置 WebDAV。
WebDAV 入门
WebDAV 将扩展安装到 IIS 设置的默认架构,这使得 AppCmd 无需进行任何特殊修改即可使用 WebDAV。 新的 WebDAV 模块将其所有可配置设置存储在 ApplicationHost.config 文件中,并使用以下部分:
- system.webServer/webdav/authoring
- system.webServer/webdav/authoringRules
“authoring”设置只能在网站的根目录中进行配置,而“authoringRules”设置可以按 URL 进行配置。 若要查看为给定路径的每个部分配置了哪些设置,可以使用 AppCmd,如以下示例所示:
AppCmd list config "Default Web Site/" /section:system.webServer/webdav/authoring
AppCmd list config "Default Web Site/" /section:system.webServer/webdav/authoringRules
启用或禁用网站的 WebDAV
可以理解的是,用于 WebDAV 的最基本且有用的命令是启用或禁用网站的 WebDAV。 为网站启用 WebDAV 的语法遵循以下示例:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost
在此示例中,我们将默认网站上的 WebDAV“authoring”部分的“enabled”属性设置为“true”,并强制将更改写入 ApplicationHost.config 文件。 相反,可以通过将相同的值设置为“false”来禁用 WebDAV,如以下示例所示:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:false /commit:apphost
要求对网站的 WebDAV 创作使用 SSL
为了保护可能正在传输的信息,可以将 WebDAV 配置为要求对所有操作使用 SSL。 为此,请使用如下所示的语法将 WebDAV“authoring”部分的“requireSsl”属性设置为“true” :
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /requireSsl:true /commit:apphost
可以通过使用如下所示的语法将“requireSsl”属性设置为“false”来禁用此功能:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /requireSsl:false /commit:apphost
允许访问网站的隐藏文件
出于安全原因,可以禁止在文件列表中返回服务器上标记为隐藏的文件。 为此,请使用如下所示的语法将“authoring”部分中“fileSystem”元素上的“allowHiddenFiles”属性设置为“true” :
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /fileSystem.allowHiddenFiles:true /commit:apphost
若要禁用列出隐藏文件,请使用如下所示的语法将“allowHiddenFiles”属性设置为“false” :
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /fileSystem.allowHiddenFiles:false /commit:apphost
为网站配置 WebDAV 兼容性设置
为了与早期版本的用于 IIS 的 WebDAV 兼容,某些可选功能通过兼容性设置公开。 目前,选项列表如下所示:
兼容性设置 | 说明 |
---|---|
无 | 指定不支持任何兼容性功能。 |
MsAuthorVia | 指定应返回“MS-Author-Via”标头。 (注意:Microsoft 的多个 Web 创作工具使用此标头。) |
MultiProp | 指定在客户端请求中应允许使用多个 <prop> 语句。 |
CompactXml | 定义 WebDAV 模块返回的 XML 是否用 CRLF 序列终止每行。 |
IsHidden | 指定应支持 IsHidden 伪实时属性。 |
IsCollection | 指定应支持 IsCollection 伪实时属性。 |
若要设置这些功能中的任何一项,需要使用如下所示的语法在“authoring”部分设置“compatFlags”属性的值:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /compatFlags:"MsAuthorVia,CompactXml" /commit:apphost
请注意,兼容性设置被指定为一组逗号分隔的标志。
使用 WebDAV 创作规则
新的 WebDAV 模块利用创作规则,从而可以配置 WebDAV 响应来自客户端的创作请求的方式。 例如,网站可能为 Internet 用户启用了匿名访问,但 Web 创作访问权限应限制为一组特定用户。 使用创作规则,可以配置哪些用户有权访问网站内容的各个部分。
配置创作规则默认值
指定是否允许非 MIME 映射文件
出于安全原因,默认情况下 IIS 不允许访问未在 MIME 映射中列出的文件。 考虑到这一点,Web 作者可能需要在服务器上处理某些未在 MIME 映射中列出的文件类型。 (例如:包括文件、数据文件等)若要启用对非 MIME 映射文件的访问,需要在“authoringRules”部分将“allowNonMimeMapFiles”属性设置为“true”。 以下语法示例演示了如何实现此目的:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /allowNonMimeMapFiles:true /commit:apphost
可以通过使用如下所示的语法将“allowNonMimeMapFiles”属性设置为“false”来禁用此功能:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /allowNonMimeMapFiles:false /commit:apphost
指定默认 MIME 类型
使用不在 MIME 列表中的文件类型时,IIS 仍需要将 MIME 类型返回到客户端。 默认情况下,这会设置为“application/octet-stream”,这意味着无论内容类型如何,文件都应被视为原始二进制文件。 若要将非 MIME 映射文件的默认 MIME 类型设置为文本文件类型,可以使用以下语法:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /defaultMimeType:"text/plain" /commit:apphost
若要重置默认 MIME 类型,请使用以下语法:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /defaultMimeType:"application/octet-stream" /commit:apphost
管理创作规则
创作规则保存在集合中,每个规则可以包含以下属性:
属性 | 说明 |
---|---|
path | 指定规则的内容类型。 (请参阅下文) |
用户 | 指定规则的用户名。 (请参阅下文) |
角色 | 指定规则的组/角色。 |
access | 指定规则的访问类型。 (请参阅下文) |
注意:
“path”属性用于指定创作规则的内容类型。 这适用于特定内容类型,例如“*.aspx”、“*.htm”等,也可以使用“*”来指示创作规则适用于所有内容。
应将“roles”和“users”属性声明为互斥的属性。 也就是说,创作规则应适用于“用户”或“角色”,但不能同时适用于两者。
为“users”属性定义了以下特殊值:
值 描述 * 所有用户 ? 匿名用户 注意
匿名用户无法读取/写入内容;此设置用于限制匿名属性查询的文件类型。
为访问类型定义了以下值:
值 说明 无 指定内容类型不允许访问 读取 指定内容类型的读取权限 写入 指定内容类型的写入权限 Source 指定对内容类型源代码的访问
添加创作规则
若要为路径添加创作规则,可以使用如下示例所示的语法:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /+[users='administrator',path='*',access='Read,Write,Source'] /commit:apphost
AppCmd set config "Default Web Site/mypath" /section:system.webServer/webdav/authoringRules /+[roles='Authors',path='*.aspx',access='Read,Write,Source'] /commit:apphost
编辑创作规则
添加创作规则后,可以使用如下语法编辑该规则:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /[users='administrator',path='*'].access:"None" /commit:apphost
删除创作规则
只需使用如下语法指定用户或角色名称即可删除创作规则:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /-[users='administrator'] /commit:apphost
注意
如果该用户存在多个创作规则,上述命令将仅删除列表中的第一个创作规则,并且需要重复该命令来删除该用户的后续规则。
或者,可以指定用户或角色名称和内容类型,如下例所示:
AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /-[users='administrator',path='*'] /commit:apphost
总结
本文档演示了如何执行以下操作:
更多信息
有关使用 WebDAV 的其他信息,请参阅以下文章:
注意
如前所述,默认请求筛选设置可能会阻止 WebDAV 创作中的多种文件类型。 如果不修改请求筛选设置,则尝试发布阻止的文件时,可能会看到各种错误。 例如,如果尝试上传或下载 web.config 文件,则会看到 WebDAV 客户端出现错误。 有关配置请求筛选设置的详细信息,请参阅如何使用请求筛选器配置 WebDAV分步演练。