如何使用 AppCmd 設定 WebDAV 設定
簡介
Microsoft 發行了新的 WebDAV 擴充模組,已針對 Windows Server® 2008 上的 Internet Information Services 7.0 (IIS 7.0) 完全重寫。 這個新的 WebDAV 擴充模組已納入許多新功能,可讓 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 的新命令列工具。 在許多情況下,請將它視為舊版的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 | 描述 |
---|---|
網站 | 虛擬網站的管理 |
APP | 應用程式管理 |
VDIR | 虛擬目錄的管理 |
APPPOOL | 管理應用程式集區 |
CONFIG | 一般設定區段的管理 |
WP | 背景工作進程管理 |
請求 | 管理 HTTP 要求 |
MODULE | 管理伺服器模組 |
備份 | 伺服器組態備份的管理 |
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
「撰寫」設定只能在網站的根目錄設定,而 「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
允許存取網站的隱藏檔案
基於安全性考慮,您可以隱藏伺服器上標示為隱藏的檔案是否會在檔案清單中傳回。 若要這樣做,請使用如下所示的語法,將 「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 相容性設定
為了與舊版 WebDAV for IIS 相容,某些選擇性功能會透過相容性設定公開。 選項清單目前如下:
相容性設定 | 描述 |
---|---|
無 | 指定不應支援任何相容性功能。 |
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 回應用戶端撰寫要求的方式。 例如,您的網站可能已啟用網際網路使用者的匿名存取,但您的網頁撰寫存取權應限制為一組特定使用者。 使用撰寫規則,您可以設定哪些使用者可以存取網站內容的各個部分。
設定撰寫規則預設值
指定是否允許非 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
管理撰寫規則
撰寫規則會保留在集合中,而且每個規則可以包含下列屬性:
屬性 | Description |
---|---|
path | 指定規則的內容類型。 (查看下方內容) |
users | 指定規則的使用者名稱。 (查看下方內容) |
角色 | 指定規則的群組/角色。 |
access | 指定規則的存取類型。 (查看下方內容) |
注意:
「path」 屬性是用來指定撰寫規則的內容類型。 這適用于特定內容類型,例如 「*.aspx」、「*.htm」等等,或者您可以使用 「*」 來指出撰寫規則適用于所有內容。
「角色」和「使用者」屬性應該彼此宣告為獨佔。 也就是說,撰寫規則應該適用于「使用者」或「角色」,但不能同時同時執行。
定義 「users」 屬性的下列特殊值:
值 描述 * 所有使用者 ? 匿名使用者 注意
匿名使用者無法讀取/寫入內容;此設定可用來限制匿名屬性查詢的檔案類型。
下列值是針對存取類型所定義的:
值 描述 None 指定內容類型不允許存取 讀取 指定內容類型的讀取權限 寫入 指定內容類型的寫入權限 來源 指定內容類型原始程式碼的存取權
新增撰寫規則
若要新增路徑的撰寫規則,您可以使用類似下列範例的語法:
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 逐步解說。