---last Modified on 19 Oct 2001
この FAQ はDAV コミュニティ、dav-dev ML、そして、 その他多くの方々より寄せられた mod_dav についての質問と回答の まとめです。この FAQ 自体は mod_dav についてのものですが、 実際には関連事項に加え、mod_dav_svn や DAV についての項目も 一部含んでいます。もし DAV についての全般的な疑問がある場合は、 DAV FAQを 読まれると良いでしょう。
この FAQ に掲載されている情報は dav-dev ML を始めとする各所から集められたものです。元々の情報の多くは、質問に 対する明確な回答という形であったものではなく、話題の流れの一部分として 出てきたものです。この FAQ への掲載に当たっては、明解かつ簡潔に見せる ために、本質的な部分だけを取り出しています。また、情報提供者への クレジットと、さらに深く調べるための手がかりとして、大本の情報と 日時を併記するようにしています。もし、FAQ 中に非公開もしくは著作権を 侵害する類の情報を見つけられた場合は、本 FAQ の編集者への連絡があり 次第、削除いたします。
本ドキュメント中のすべての電子メールアドレスは、SPAM 抑制のために ぼかされています。正しいアドレスは [at] を @ に戻したものです。
注記および警告: 本 FAQ の情報には OS 依存のものが含まれて います。また、掲載されている情報が正しいこと、最新であること、 そして無害であることの一切の保証はありません。
この FAQ はオープンソースコミュニティーにおいて利用される資料として 提供される著作物です。この概念に基づき、すべての再配布および派生物に 対して本 FAQ の著作者および web-dav コミュニティのクレジットを付記する ことで、自由に複写・複製・改変・利用を行なうことが許可されています。
この文書の最新版は http://www.sitepen.com/moddav/FAQ.html から入手可能です。
---Ellis Teer (teer[at]sitepen.com) on 13 Oct 2001
http://www.webdav.org/mod_dav/ から配布されており、こちらでダウンロードも可能です。
---Ellis Teer (teer[at]sitepen.com) on 13 Oct 2001
mod_dav はオープンソースソフトウェアで、 http://www.webdav.org/mod_dav/license-1.html で参照できる、Apache ライセンスを若干改変したライセンスで配布されています。
---Ellis Teer (teer[at]sitepen.com) on 13 Oct 2001
サーバー/クライアント共にその数は増え続けています。もっとも広く 使われているクライアントとしては、(最近の Windows や 一部 Office 製品に 付属の)Microsoft WebFolders、Cadaver、WebDAV Explorer、そして Adobe GoLive が挙げられます。参照先つきの完全なリストは http://www.webdav.org/projects/ にあります。
---Ellis Teer (teer[at]sitepen.com) on 13 Oct 2001
Apache http 2.0 や Subversion に 含まれている最新の mod_dav では、取り扱うコレクションや リソースにアクセスするためのインタフェースを定義しています。 冒頭の mod_dav_svn と mod_dav_fs はそのインタフェースを実装して いるものです。どちらを使うかは、Apache の設定ファイルで選択します。 なお、Apache 1.x では、内部に mod_dav_fs 相当の機能が含まれている ため、mod_dav のみで十分です。
mod_dav_fs は通常のファイルシステム上のファイルやディレクトリを mod_dav から扱うための機能を提供します。 Apache httpd 2.0 から標準モジュールとして付属するようになった mod_dav には この mod_dav_fs もしくは相当品がセットになっています。
mod_dav_svn は新たに策定された Delta-V 仕様に基づいて、CVS ライクな機能を提供するものです。 これは WebDAV の拡張機能で、バージョン管理を行なう場合に 有用です。より詳しくは http://subversion.tigris.org/ の Subversion プロジェクトを参照して下さい。
---Ellis Teer (teer[at]sitepen.com) on 15 Oct 2001
davfs とは WebDAV サーバーをディスクとしてマウント可能にする、 WebDAV クライアントとして動作する Linux のファイルシステム ドライバです。これは mod_dav + Apache を WebDAV サーバとして使う こととは直接関係しません。というのも、davfs はあらゆる WebDAV サーバをディスクのようにマウントして使うためのものだからです。 davfs を使うにあたり考えられる設定は、Apache + mod_dav な WebDAV サーバをLinuxディスクドライブとしてマウントすることです。
---Ellis Teer (teer[at]sitepen.com) on 06 Nov 2001
現在の @lyra.org の利用は完全に歴史的なものです。将来のある時点で、 必要な時間を見つけられ次第、dav-dev@lyra.org は mod_dav@webdav.org か 何かに切替えるつもりです。 同様に dav-announce@lyra.org は announce@webdav.org となります。
---Greg Stein (gstein[at]lyra.org) from dav-dev archive on 4 Oct 2001
mod_dav (+ Apache) は Class 1 および Class 2 の WebDAV サーバーの 機能を持っています。これはつまり、リソース(ファイル)、リソース 属性、そしてリソースへの排他ロックの操作ができるということです。
---Ellis Teer (teer[at]sitepen.com) 13 Oct 2001
いえ、mod_dav には RFC 2518 の仕様を満たしていない点がいくつかあります。コストが高過ぎる、 通常の利用では問題のない部分である、などの理由で実装されませんでした。 これは将来のバージョンでは修正されるかもしれません。
---Greg Stein (gstein[at]lyra.org) from www.webdav.org 13 Oct 2001
可能です。HTTP (RFC 2616) 仕様に含まれている Range: ヘッダについて 調べるとよいでしょう。
---Greg Stein (gstein[at]lyra.org) from dav-dev archive on 5 Oct 2001
DAV は、MacOS X を見れば明らかなように、たしかに ファイル共有システムとして使うことができます。 (MacOS Xでは)DAV サーバーをファイルシステムとして マウントできますし、サーバー版にはそれ自体に DAV サーバー 機能が含まれています(実際には Apache/mod_dav ですが)。 DAV それ自体には、リモートファイルシステムとしての利用を 妨げるものは一切ありません。現時点で足りないものを挙げると すれば、リモート認証機構とシンボリックリンク的な機能でしょう。 しかし、前者は目処が立っている ACL 仕様で提供されますし、 後者は Reference 仕様で提供されます(こちらは策定プロセスが 止まっていますが)。
---Greg Stein (gstein[at]lyra.org) from dav-dev archive on 4 Oct 2001
Apache と mod_dav はかなりセキュアといってよいでしょう。 過去3年間、最初にリリースされて以来、コーディング上の セキュリティ問題はただの1件も報告されていません。 もちろん、自分で間違った設定を行なうことはできます。 実際、SuSE Linux はそのような問題を含んだパッケージをリリースし、 その結果、セキュリティ報告とアップグレードのアナウンスをすることに なりました。しかし、付属のインストール文書に書かれている注意事項を 念頭に設定しさえすれば、Apache と mod_dav はかなりセキュアといって よいでしょう。
---Greg Stein (gstein[at]lyra.org) from dav-dev archive on 4 Sep 2001
現在、mod_dav にはディスク容量の制限機構は含まれていません。 実現手法が各プラットフォームで異なっており、プラットフォーム独立な 方法で実装することが困難なためです。ユーザー管理とディスク容量の 制限方法についてはこれまでも議論されていますが、実装作業としては 行なわれていません。どのような形で実装されるにせよ、オペレーティング システムの機構とは別に、追加機能として(必ずしも連動しない形で) 入ることになるでしょう。
---Ellis Teer (teer[at]sitepen.com) on 19 Oct 2001
mod_dav には既存のディスク容量制限機構を利用する仕組みは入って いませんが、Apache を各ユーザーの権限の下で動かすことで、結果的に サポートさせることができます。なお、これは Apache を root 権限で 走らせる必要があるので、熟考の上でされることをお勧めします。
さて、まずは apache を CFLAGS に -DBIG_SECURITY_HOLE をつける形で再コンパイルして下さい。これで apache が root 権限で 走るようになり、後で認証結果に基づいて seteuid(2) を発行できるようになるわけです。
# 名前の通り、重大な問題が発生する可能性がありますが、 # そのリスクは取れるものとします
再コンパイルが終った後は、認証結果から得られるユーザー名を システムユーザーの uid にどうやって対応させるか決めなくては なりません。
もし単純に /etc/passwd のエントリの通りに割り付けたいのであれば、 http://www.snert.com/Software/Become/ から入手できる mod_become を導入すればOKです。
上にあてはまらない場合、認証結果から得られる uid に 対して seteuid(2) が呼ばれるように、自分で apache の モジュールを作らなくてはなりません。もっともこれは 簡単で、二つの点に注意するだけです。
実際のコードは次のようになります:
/*
* in fixup stage
*/
/* 渡されたユーザー名に対応する uid を得る - 中は自分で書くこと */
uid_t uid = mygetuid(username);
if (uid == 0)
uid = uid_for_some_safe_user; /* とりあえず root で処理はしない */
seteuid(uid);
...
/*
* in logging/cleanup stage
*/
seteuid(ap_user_id); /* 次の seteuid(2) のために元の権限に戻しておく */
もし mod_perl やそれ系のモジュールも入れている場合、上記処理は一行で 書くことも可能です。必要なのは PerlFixupHandler と PerlLogHandler を フックして、$> の値を変えるだけです。
---Taisuke Yamada (tai[at]iij.ad.jp) from dav-dev archive on 23 Mar 2001
http://www.webdav.org/mod_dav/install.html を参照して下さい。
---Ellis Teer (teer[at]sitepen.com) on 10 Oct 2001
これから述べる手順は、Apache を mod_dav 付きで一から作ることを 想定しています。既にコンパイル済みの Apache に mod_dav を追加する 方法については、mod_dav 付属の文書を参照して下さい。また、 Apache と mod_dav の作成には GNU gcc コンパイラが必要です。 いくつかのプラットフォームについては、バイナリパッケージが 用意されています(http://www.gnu.org/software/gcc/gcc.html)。
まず Apache/mod_dav を置くフォルダを決め、その中に "www" もしくは その系統の名前のサブフォルダを作成し、そこをカレントディレクトリとして 移動して下さい。ここでは、/myfiles1/www を 前提に話を進めます:
prompt% cd /myfiles1
prompt% mkdir www
prompt% cd www
そして、以下のパッケージを src フォルダにダウンロードして下さい:
Apache version 1.3.20: http://httpd.apache.org/dist/httpd/apache_1.3.20.tar.gz
mod_dav version 1.0.2: http://www.webdav.org/mod_dav/mod_dav-1.0.2-1.3.6.tar.gz
これらを gunzip し、展開します:
prompt% gunzip apache_1.3.20.tar.gz
prompt% tar xvf apache_1.3.20.tar
...
prompt% gunzip mod_dav-1.0.2-1.3.6.tar.gz
prompt% tar xvf mod_dav-1.0.2-1.3.6.tar
...
まずは Apache の方で "configure" コマンドを実行します:
prompt% cd apache_1.3.20
prompt% ./configure --prefix=/myfiles1/www/apache_1.3.20
...
次は mod_dav の方で同様に "configure" コマンドを実行します:
prompt% cd ../mod_dav-1.0.2-1.3.6
prompt% ./configure --with-apache=/myfiles1/www/apache_1.3.20
...
mod_dav モジュールを作成します:
prompt% make
...
prompt% make install
...
そして、コンパイルされた mod_dav を組み込むために、再度 "configure" を Apache の方で実行します:
prompt% cd ../apache_1.3.20
prompt% ./configure --prefix=/myfiles1/www/apache_1.3.20 --activate-module=src/modules/dav/libdav.a
...
最後に、Apache を mod_dav を組み込んだ形で作成します:
prompt% make
...
prompt% make install
...
---Eric G. Stephan (Eric.Stephan[at]pnl.gov) on 10 Oct 2001
mod_dav 入りの Apache のインストールを終え、ユーザーアカウントの 登録も終ったら、Apache の httpd.conf を編集してサーバー設定を 行なわなくてはなりません。この設定ファイルは、インストール後の "conf" フォルダにあります。ここでは、とりあえず動かすために必要な 最低限の内容を述べます。
メモ: どんな変更を加える場合でも、httpd.conf のバックアップを取った 上で編集する習慣を付けておくとよいでしょう。
まずは、httpd.conf を編集するにあたっての基礎知識です:
それではエディタを使って、httpd.conf を以下のように編集して下さい:
# ここは DocumentRoot に合わせて下さい
#
<Directory "/files0/home/e-wwwdocs">
#
# ここは "None", "All", もしくは "Indexes", "Includes",
# "FollowSymLinks", "ExecCGI", "MultiViews" の組み合わせを設定します
#
# なお、"MultiViews" だけは明示的に指定が必要です --- "Options All" では
# 設定されません。
#
Options Indexes FollowSymLinks MultiViews Includes
#
# ここでは .htaccess を使って各フォルダで何を設定できるかを制限します。
# "All" もしくは "Options", "FileInfo", "AuthConfig", "Limit" の
# 組合せを指定します。
AllowOverride None
#
# 誰がこのサーバーにアクセスできるかを制御します
#
Order allow,deny
Allow from all
</Directory>
# --
# -- ここ以降はアクセス制御など他の機能に関連する設定です
# --
# DAV アクセス可能なディレクトリの指定
# ここでは DAV を有効にし、すべてのウェブブラウザからのアクセスを
# 可能にする一方、アクセス許可は読み出しのみ、としています。
# AuthName は用途に応じて適当に設定して下さい。
<Directory full-DAV-directory-path>
AuthName "any-name-you-want"
AuthUserFile directory-path-to-password-file/password-file-name
AuthType Basic
AllowOverride None
DAV On
Options Indexes
Order allow,deny
# デフォルトで読みだしのみとして公開する場合の設定例。
# 追加的な認証設定は .htaccess でも行なうことができます。
Allow from all
<Limit HEAD GET POST OPTIONS PROPFIND>
Allow from all
</Limit>
<Limit MKCOL PUT DELETE LOCK UNLOCK COPY MOVE PROPPATCH>
Deny from all
</Limit>
require valid-user
</Directory>
---Eric G. Stephan (Eric.Stephan[at]pnl.gov) on 10 Oct 2001
まず、mod_dav によるアクセス制限は、Apache により提供されている、他のドキュメントアクセス制限と同じ方法で実現可能です。 -- 例えば、.htaccess ファイルを用いた標準の認証設定が使用可能です。 mod_dav の内部に作りこまれている認証機構はありませんし、そうする必要がありません。 -- 認証に関する Apache のモジュールはすでに提供されています(必要であれば、SSLによる暗号化もあります)。 ここで注意しなければならないのは、Apache の認証(要は mod_dav の認証)は、通常の(/etc/passwd に記述されている)UNIXユーザとパスワードとは何の関連もないことです。-- もっともこれは、Apache の認証を使うにあたっての共通した誤解のように思います。
---Brendan Quinn (brendan[at]clueful.com.au) from dav-dev archive on 11 Oct 2001
mod_dav がApache モジュールであることを理解すれば、(少なくとも)ここに書かれてることがトリッキーであることがわかるでしょう。Apache は、サーバが走行しているユーザ権限(一般的には nobodyユーザ権限で走行しています)でファイルを書き込みます。ここで取りうる選択肢としては、
1)Apache を -DBIG_SECURITY_HOMEオプションを付加してコンパイルし、root 権限で Apache を走行させてください。その結果、Apache はsetuidを必要に応じて利用することができます。これはもちろん、a Bad Thing(tm) であることは言うまでもありません。
2)Apache のインスタンスをシステムにアクセスしたいユーザ権限で走行させてください。これを実行するには少し悩むかもしれませんが、不可能ではありません。どの程度煩雑になるかというのは、このようなことをしたいユーザがどの程度いるかに依存します。もし、少ない数のユーザ(100人以下)であれば、これは難しいことではありません。ポート80をlistenしてリクエストに応じてhttpd -c usernameというコマンドラインを実行するような(小さい)プログラムを作成すればいいだけのことです。必要な username をリクエストにより把握するには、2つの方法があります。私はこれは理想的な方法とは思いませんが、実装は面白いでしょうね。
3) suexecから起動される DAV server CGI を作成するなり見つけるなりしてください。私はそのようなプログラムの存在は知りませんが、あればあなたの問題を解決することができるでしょう。もちろんこのような場合、fork() (+exec())の分の性能コストは払うことになります。これは、トラフィックによっては問題になるかもしれません。
---Noah Robin (sitz[at]onastick.net) from dav-dev archive on 1 Oct 2001
Apache をインストールしたら"htpasswd"というユーティリティがbin ディレクトリの下に作成されます。これを用いてユーザアカウントの管理が可能になります。Nulshell の本によると、 htpasswd は単にパスワードファイルを作成したり、ユーザや暗号化されたパスワードをファイルに追加したりするだけのシンプルなツールです。このユーティリティの全てのオプションを以下に示します。
prompt% htpasswd -?
パスワードファイルを生成するためには、以下のようにします。
prompt% htpasswd -c /my-directory-path/my-password-file user-name
注意: コマンド実行時に、同じパスワードを2回入力するよう促されます。
追加のユーザアカウントをパスワードファイルに追加するには、以下のようにします。
prompt% htpasswd /my-directory-path/my-password-file user-name-2
警告: セキュリティ上の理由から、パスワードファイルを Apache の Web root 配下には作成/格納しないことが推奨されています。
(訳注:セキュリティ上のことを考えるのであれば、ベーシック認証ではなくダイジェスト認証を使用した方がベターです。ベーシック認証は平文で認証のためのユーザ名とパスワードが流れますが、ダイジェスト認証はユーザ名とパスワードから生成されたダイジェスト文が流れるだけなので、ベーシック認証よりは安全です。)
---Eric G. Stephan (Eric.Stephan[at]pnl.gov) on 10 Oct 2001
mod_dav は、ロックファイルの操作をするようなユーティリティはいっしょに提供していません(mod_dav の中に作成されているロック機構はさておきますが)。しかし、ロックファイルとして作成された .dir ファイルと .pag ファイルを削除することで、いとも簡単に全てのロックを解除することができます。しかし、この方法は他の誰かがあるべきことを期待しているロックを除去できてしまうことに注意してください。ある種のDAVクライアントは、lock が消失するかタイムアウトするかするまでレスポンスを返さなくなります(例えば MS Office がその1つです)。推奨されているアプローチは、その時間を管理のためのダウンタイムと呼ぶことです。ロックファイルを削除する前に、「これから1分ほどダウンします(言い方はいくつもあるでしょうが)とユーザにアナウンスしてください。そうすれば、ユーザは作業ファイルを保存したり閉じたりすることができるでしょう(このために Apache そのものを停止する必要はないことに注意してください)。
---Greg Stein (gstein[at]lyra.org) from dav-dev archive on 4 Oct 2001
クライアントはLOCK要求を発行しなければなりません。MS Office や他のクライアントはLOCK要求を出しますが、Webフォルダは出していません。
---Keith Wannamaker (Keith[at]Wannamaker.org) from dav-dev archive on 11 Sep 2001
mod_dav はシンボリックを表示しません。また、見つけたとしても無視します。シンボリックリンクは、RFC 2518の中では、シンボリックリンクは定義されていません。リポジトリやファイルシステムは、mod_dav とは独立しているべきです。そしてmod_dav はシンボリックリンクを作成できませんので、利用者はシンボリックリンクを使わないようにしましょう。但し、手動でシンボリックリンクを作成するか、他のプログラムでこれを実現する場合にはこの限りではありません。もしあなたが mod_dav が注意深くロック動作等をしている裏をかいてリポジトリを手動で操作しようとするのであれば、潜在的な問題が引き起こされることがあります。
---Ellis Teer (teer[at]sitepen.com) on 15 Sep 2001
もし使われているクライアントが Microsoft WebFolder だった場合、 それには相互運用上の問題があることが知られています。 ファイル名として UTF-8 ではなく、プラットフォーム上で使われている、 生の、自動判定困難なエンコーディングを送ってくるのです(これは 最近のリリースでは修正されている様ですが、具体的にどの版が修正されて いるのかはまだ不明です)。多くの UNIX ベースの実装も同様の問題を 抱えています。
さて、mod_dav 自体は UTF-8 以外のエンコーディングを認識しませんが、 これへのパッチ、または独立した形で提供される Apache モジュールを 利用することで対応することが可能です。モジュールについては http://www.lyra.org/pipermail/dav-dev/2001-May/002428.html より入手可能です。現在大幅な機能拡張中であり、新版も まもなく入手可能となるでしょう。
---Taisuke Yamada (tai[at]iij.ad.jp) on 19 Oct 2001
サーバー側でのファイル名に UTF-8 以外のエンコーディングを利用可能にする パッチが現在開発中です(このパッチは上で触れた Microsoft WebFolder パッチ とは別の物です)。このパッチを WebFolder パッチと併用することで、 クライアント側、サーバー側ともに任意のエンコーディングが利用可能と なります。
このパッチの初期実装の一つとして、 http://www.sera.desuyo.net/WebDAV/ で日本語対応を可能にするパッチが公開されています。現在、数種ある 各種実装を統合し、すべてのエンコーディングに対応するための作業を チームを組んで作業中です。なお、統合版では日本語の取り扱いについても 大きく改良されています。
これもまた、近いうちに入手可能となるでしょう。
---Taisuke Yamada (tai[at]iij.ad.jp) on 19 Oct 2001