AppCmd を使用して WebDAV 設定を構成する方法

作成者 : Robert McMurray
発行日 : 2008 年 2 月 14 日 (作業者 : robmcm(英語))
更新日 : 2009 年 3 月 18 日 (作業者 : robmcm(英語))

はじめに

Microsoft は、Windows Server® 2008 のインターネット インフォメーション サービス 7.0 (IIS 7.0) 用に完全に書き換えられた、新しい WebDAV 拡張モジュールをリリースしました。この新しい WebDAV 拡張モジュールには多くの新機能が組み込まれており、Web 作成者にはコンテンツの発行がしやすくなる環境を、Web 管理者にはより優れたセキュリティおよび構成オプションを提供します。また Microsoft は、Windows Server® 2008 用 WebDAV 拡張モジュールに対して、上書きによって更新内容が失われることを防ぐための共有ロックと排他的ロックをサポートする更新プログラムをリリースしました。

このドキュメントでは、IIS 7.0 の新しい AppCmd.exe ユーティリティを使用して、コマンド ラインまたはバッチ スクリプトから WebDAV 設定を構成する方法について説明します。

このチュートリアルの内容

  • AppCmd の基本概念
  • WebDAV の使用の開始
  • WebDAV オーサリング ルールの使用
  • まとめ

前提条件

この記事の手順を完了するには、次の項目を満たしている必要があります。

  • サーバーに IIS 7.0 がインストールされ、以下が構成されている必要があります。
    • IIS 7.0 のインストールで作成される既定の Web サイトがまだ存在する。
  • 新しい WebDAV 拡張モジュールがインストールされている必要があります。新しい WebDAV モジュールのインストールについては、次のドキュメントを参照してください。

: このドキュメントの手順は、完全な管理アクセス許可を使用して実行する必要があります。そのためには、次のいずれかの方法を使用することをお勧めします。

  • ローカルの "administrator" アカウントを使用してコンピューターにログインします。
  • ローカルの "administrator" アカウント以外の管理アクセス許可を持つアカウントを使用してログインする場合は、IIS マネージャーおよびすべてのコマンド プロンプト セッションを "管理者として実行" オプションを使用して開きます。

Windows Server 2008 では、ユーザー アカウント制御 (UAC) セキュリティ コンポーネントにより、IIS 7.0 の構成設定への管理者としてのアクセスが制限されるため、上記の条件が必要となります。UAC の詳細については、次のドキュメントを参照してください。

: 要求のフィルタリングの設定により、既定でいくつかのファイルの種類が WebDAV オーサリングからブロックされる可能性があります。IIS マネージャーの UI を使用して WebDAV を構成する場合、要求のフィルタリングの設定は、WebDAV オーサリングのブロックを解除するために自動的に更新されます。ただし、IIS マネージャーの UI を使用する以外の方法で WebDAV を構成する場合は、「WebDAV と要求のフィルタリングを構成する方法」のチュートリアルを参照してください。

AppCmd の基本概念

AppCmd.exe は、IIS 7.0 を管理するための新しいコマンド ライン ツールです。AppCmd.exe は多くの点において、以前の IIS バージョンの adsutil.vbs スクリプトの代替ツールと見なされます。AppCmd.exe では、さまざまなオブジェクトに対して幅広いコマンド スイッチがサポートされており、バッチ ファイルで簡単にスクリプト化して多数の IIS 設定を構成できます (注 : AppCmd.exe ユーティリティは %WinDir%\System32\InetSrv フォルダーにあります)。

AppCmd.exe の一般的な構文は次のとおりです。

AppCmd (command) (object-type) <identifier> </parameter1:value1 ...>

また、AppCmd.exe では広範なコマンド ライン ヘルプがサポートされており、次のいずれかの方法を使用してアクセスできます。

AppCmd /?
AppCmd (object) /?
AppCmd (command) (object) /?

コマンドの一覧はオブジェクトによって異なります。サポートされているオブジェクトは次のとおりです。

オブジェクト 説明
SITE 仮想サイトの運用管理
APP アプリケーションの運用管理
VDIR 仮想ディレクトリの運用管理
APPPOOL アプリケーション プールの運用管理
CONFIG 汎用の構成セクションの運用管理
WP ワーカー プロセスの運用管理
REQUEST HTTP 要求の運用管理
MODULE サーバー モジュールの運用管理
BACKUP サーバー構成バックアップの運用管理
TRACE 失敗した要求のトレース ログの操作

たとえば、次の構文では、SITE オブジェクトを使用してサーバー上で構成されている Web サイトを一覧表示できます。

AppCmd list site

同様に、次の構文では、APPPOOL オブジェクトを使用してサーバー上で構成されているアプリケーション プールを一覧表示できます。

AppCmd list apppool

AppCmd は、SITE オブジェクトを使用してさまざまな構成設定の値を設定するためにも使用できます。次の構文を使用すると、既定の Web サイトで使用可能な設定を一覧表示できます。

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

また、"/commit:" コマンド ライン パラメーターを使用することで、指定した設定が AppCmd によって書き込まれる場所も制御できます。たとえば、このドキュメントの後半では、既定の Web サイトで WebDAV を有効にする次のコマンドについて説明します。

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost

: このコマンドは、既定の Web サイトで WebDAV を有効にし、その設定を ApplicationHost.config ファイルに書き込みます。

AppCmd は非常に強力なユーティリティであり、ここですべてを説明するにはスペースが足りません。AppCmd.exe を理解するための詳細については、IIS.NET Web サイトで次の記事を参照してください。

それでは、次にサーバー上での WebDAV の構成について説明します。

WebDAV の使用の開始

WebDAV は、IIS 設定の既定のスキーマに対する拡張機能としてインストールされます。これにより、特別な変更を行うことなく WebDAV で AppCmd を使用できます。新しい WebDAV モジュールでは、すべての構成設定が ApplicationHost.config ファイルに格納されます。次のセクションを使用します。

  • system.webServer/webdav/authoring
  • system.webServer/webdav/authoringRules

"authoring" 設定は Web サイトのルートでしか構成できませんが、"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

Web サイトの WebDAV の有効化または無効化

言うまでもなく、WebDAV で最も基本的かつ有用なコマンドは、サイトの WebDAV の有効化または無効化です。Web サイトの WebDAV を有効にするための構文は、次の例のようになります。

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost

この例では、既定の Web サイトの WebDAV の "authoring" セクションで "enabled" 属性を "true" に設定し、この変更が ApplicationHost.config ファイルに書き込まれるように指定しています。また、同じ値を次の例に示すように "false" に設定すると、WebDAV を無効にできます。

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:false /commit:apphost

Web サイトの WebDAV オーサリングでの SSL の要求

転送する情報を保護するために、すべての操作で SSL を要求するように WebDAV を構成できます。これを行うには、次のような構文を使用して、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

Web サイト上の非表示ファイルへのアクセスの許可

セキュリティ上の理由からサーバー上で非表示としてマークされているファイルを、ファイルの一覧で返すかどうかを指定できます。非表示ファイルの一覧表示を有効にするには、次のような構文を使用して、"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

Web サイトの WebDAV の互換性設定の構成

IIS 用 WebDAV の以前のバージョンとの互換性を確保するために、いくつかのオプション機能が互換性設定を通じて公開されています。現在のオプションの一覧は次のとおりです。

互換性設定 説明
None 互換性機能をサポートしないように指定します。
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 がクライアントからのオーサリング要求に応答する方法を構成できます。たとえば、Web サイトでインターネット ユーザーに対して匿名アクセスが有効になっていても、Web オーサリング アクセスは特定のユーザー セットに制限することが必要な場合があります。オーサリング ルールを使用すると、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 ルールの対象となるコンテンツの種類を指定します (下記参照)。
users ルールの対象となるユーザー名を指定します (下記参照)。
roles ルールの対象となるグループ/役割を指定します。
access ルールの対象となるアクセスの種類を指定します (下記参照)。

:

  • "path" 属性は、オーサリング ルールの対象となるコンテンツの種類を指定するために使用します。これには、"*.aspx"、"*.htm" などの特定のコンテンツの種類を指定できます。また、"*" を使用してオーサリング ルールがすべてのコンテンツに適用されるように指定することもできます。

  • "roles" 属性と "users" 属性は、いずれか一方しか宣言できません。つまり、オーサリング ルールは "users" または "roles" のいずれかを対象とする必要があり、両方を対象とすることはできません。

  • "users" 属性に対しては、次の特別な値が定義されています。

    説明
    * すべてのユーザー
    ? 匿名ユーザー

    : 匿名ユーザーはコンテンツの読み取りおよび書き込みを実行できません。この設定は、匿名でのプロパティ クエリに関してファイルの種類を制限するために使用されます。

  •  アクセスの種類に対しては、次の値が定義されています。

    説明
    None 対象のコンテンツの種類に対してアクセスを許可しないことを指定します。
    Read 対象のコンテンツの種類に対する読み取りアクセス権を指定します。
    Write 対象のコンテンツの種類に対する書き込みアクセス権を指定します。
    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

まとめ

このドキュメントでは、次の方法について説明しました。

  • AppCmd を使用した WebDAV の基本的なタスクの実行 :
    • Web サイトの WebDAV の有効化または無効化
    • Web サイトの WebDAV オーサリングでの SSL の要求
    • Web サイト上の非表示ファイルへのアクセスの許可
    • Web サイトの WebDAV の互換性設定の構成
  • WebDAV オーサリング ルールの使用 :
    • オーサリング ルールの既定値の構成
    • オーサリング ルールの管理

詳細情報

WebDAV の使用の詳細については、次の記事を参照してください。

: 既に説明したように、要求のフィルタリングの既定の設定により、いくつかのファイルの種類が WebDAV オーサリングからブロックされる可能性があります。要求のフィルタリングの設定を変更しない場合、ブロックされているファイルを発行しようとすると、さまざまなエラーが表示されることがあります。たとえば、web.config ファイルをアップロードまたはダウンロードしようとすると、WedDAV クライアントでエラーが表示されます。要求のフィルタリングの設定を構成する方法の詳細については、「WebDAV と要求のフィルタリングを構成する方法」のチュートリアルを参照してください。

関連コンテンツ

記事