WebDAV とは、HTTP プロトコルの拡張でクライアントからの Web サーバーのコンテンツの管理を可能にする機能です。HTTP は、Web サーバーにあるファイルやファイルの一覧などをクライアントに送るための規約ですが、WebDAV では、クライアントで作成したファイルのアップデートや、サーバー上のファイルの削除や移動、コピーなども可能にします。Apache では、WebDAV の機能は mod_dav および mod_davfs モジュールにより提供されます。便利な機能ではありますが、反面リモートクライアントからの更新を許可することになるためセキュリティを十分に考慮する必要もあります。なお、/etc/httpd/conf/modules には以下の記述があり、mod_dav および mod_davfs モジュールはデフォルトで読み込まれています。
LoadModule dav_module /usr/lib/httpd/modules/mod_dav.so LoadModule dav_fs_module /usr/lib/httpd/modules/mod_dav_fs.so |
WebDAV に関連する基本的なディレクティブは以下の通りです。
クライアントから書き込みを許可するディレクトリの Directory ディレクティブに WebDAV の有効(On)、無効(Off)を指定します。サーバーのセキュリティが確保できてからこの値を On にして変更してください。
ロックファイルのパスを指定します。Turbolinux 10 Server では初期状態で以下のように指定されています。
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule> |
例えば、/var/www/php-source ディレクトリに対する DAV アクセスを許可するには以下のように指定します。WebDAV でファイル操作を許可するディレクトリへのアクセス制御(詳細は項9.9)やユーザー認証の設定(詳細は項9.17)は適切に行ってください。
<IfModule mod_dav_fs.c>
DAVLockDB /var/lib/dav/lockdb
</IfModule>
Alias /php-source "/var/www/php-source"
<Location /php-source>
DAV On
AuthType Basic
AuthName "web-dav"
AuthUserFile "/etc/httpd/conf/htpasswd"
Require valid-user
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
</Location> |
/etc/httpd/conf/httpd.conf の編集後は変更を反映させるために Apache の再起動が必要です。
WebDAV でファイル操作するディレクトリは、User ディレクティブと Group ディレクティブで指定されたユーザーに書き込みを許可する必要があります。Turbolinux 10 Server の初期値は、いずれも apache です。例えば /var/www/html/php-source ディレクトリに対する書き込みを許可したいときその他のユーザーに書き込み権限を追加します。
# mkdir /var/www/php-source # ls -dl /var/www/php-source drwxr-xr-x 2 root root 4096 7月 26 20:27 /var/www/php-source # chmod o+w /var/www/php-source |
WebDAV 環境で日本語ファイル名を利用する場合、WebDAV サーバーではファイル名の文字コードを使用しますが、多くの WebDAV クライアントは、クライアントホストで使用している文字コードをそのまま送ります。例えば、Windows クライアントから送られるファイル名には Shift-JIS が使用されるので、WebDAV サーバーとクライアントの間で文字コードの変換が必要になります。そこで、HTTP リクエストおよびヘッダに含まれる文字コードの変換機能を提供する mod_encoding モジュールが利用されます。Turbolinux 10 Server では、/etc/httpd/conf.d/mod_encoding.conf に以下の記述があり、特別な変更をせずに Windows クライアントで日本語名のファイルやディレクトリを扱うことができます。
LoadModule encoding_module modules/mod_encoding.so EncodingEngine on SetServerEncoding UTF-8 DefaultClientEncoding UTF-8 CP932 EUCJP-MS AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8 AddClientEncoding "Microsoft .* DAV" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8 AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932 AddClientEncoding "RMA/*" CP932 AddClientEncoding "xdwin9x/" CP932 AddClientEncoding "cadaver/" UTF-8 EUCJP-MS AddClientEncoding "Mozilla/" EUCJP-MS |
WebDAV で書き込みを許可している Web サーバーへアクセスをするにはクライアント側の設定が必要です。Windows XP や Windows98 などの Windows クライアントでは標準で WebDAV クライアントの機能があります。