如何使用 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.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 會將擴充功能安裝到 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 網站的語法遵循下列範例:
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 「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 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 回應用戶端撰寫要求的方式。 例如,您的網站可能已啟用網際網路使用者的匿名存取,但您的網頁撰寫存取權應限制為一組特定使用者。 使用撰寫規則,您可以設定哪些使用者可以存取網站內容的各個部分。
基於安全性考慮,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 清單中的檔案類型時,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 逐步解說。