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

執筆者: Robert McMurray

はじめに

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

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

前提条件

この記事の手順を完了するには、次の項目が必要です。

  • IIS 7.0 をサーバーにインストールし、次のように構成する必要があります。

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

Note

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

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

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

Note

要求フィルタリング設定では、いくつかの種類のファイルが 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 オブジェクトを使用して、サーバーで構成されている 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

Note

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

AppCmd は非常に強力なユーティリティであり、現実的に、内容が多すぎてこのような短い紙幅では扱いきれないため、AppCmd.exe について詳しくは、IIS.NET Web サイトの次の記事をご覧ください。

それでは、お使いのサーバーで WebDAV を構成する方法に進みます。

WebDAV の概要

WebDAV では IIS 設定用の既定のスキーマへの拡張機能がインストールされます。これにより、特別な変更を加えることなく AppCmd が WebDAV と連携できるようになります。 新しい 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 の必須化

転送する可能性のある情報を保護するために、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

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 と互換性を持つために、一部のオプション機能が互換性設定によって公開されます。 現在、オプションの一覧は次のとおりです。

互換性設定 説明
なし 互換性機能がサポートされないことを指定します。
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 規則のグループ/ロールを指定します。
アクセス 規則のアクセスの種類を指定します。 (後述)。

注:

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

  • "roles" 属性と "users" 属性は、相互に排他的に宣言する必要があります。 つまり、オーサリング規則は "users" または "roles" に対するものであり、両方に対するものではありません。

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

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

    Note

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

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

    Value 説明
    なし コンテンツの種類に対してアクセスが許可されないことを指定します
    読み取り コンテンツの種類の読み取りアクセス権限を指定します
    書き込み コンテンツの種類の書き込みアクセス権限を指定します
    ソース コンテンツの種類のソース コードへのアクセスを指定します

オーサリング規則の追加

パスのオーサリング規則を追加するには、次の例のような構文を使用できます。

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

Note

そのユーザーに対して複数のオーサリング規則が存在する場合、上記のコマンドではリスト内の最初のオーサリング規則のみを削除するため、そのユーザーの後続の規則を削除するにはこのコマンドを繰り返す必要があります。

または、次の例のように、ユーザーまたはロール名とコンテンツの種類の両方を指定できます。

AppCmd set config "Default Web Site/" /section:system.webServer/webdav/authoringRules /-[users='administrator',path='*'] /commit:apphost

まとめ

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

その他の情報

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

Note

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