LighttpdでWebDAVの仮想ホストを設定してクライアントから接続する
概要
この手順は次をカバーします:
- WebDAV用ユーザーを作成するためのhtpasswdの利用
- 認証ファイルの所有権とパーミッション設定
- lighttpdの仮想ホスト(vhost)設定で/webdavパスに限ってWebDAVを有効化
- 動作確認(cadaver)
- Windows XP と GNOME クライアントの接続ヒント
用語1行定義:
- WebDAV: HTTP上でファイル操作(アップロード/ダウンロード/ロック)を可能にする拡張プロトコル。
重要: 本番環境では必ずHTTPS(ポート443)での利用を検討してください。認証情報やデータが平文で流れるのを防止します。
4 仮想ホストをWebDAV用に設定する
まず、WebDAV認証用のパスワードファイルを作成します。ここでは /var/www/web1/passwd.dav を使い、ユーザー名は test とします。-c オプションはファイルが存在しない場合に新規作成します。
htpasswd -c /var/www/web1/passwd.dav test
プロンプトに従いパスワードを入力してください。既存ファイルがある場合は -c を使うと上書きされ、既存ユーザーが消えるので注意してください。
次に passwd.dav の所有者とパーミッションを制限します。root と lighttpd グループのメンバーのみが読み取り可能にします。
chown root:lighttpd /var/www/web1/passwd.dav
chmod 640 /var/www/web1/passwd.dav
その後、仮想ホスト設定を編集して /webdav へのアクセスでのみ WebDAV を有効にします。設定ファイルを編集します:
vi /etc/lighttpd/lighttpd.conf
次のようなブロックを該当する vhost 部分に追加または編集してください:
[...]
$HTTP["host"] == "www.example.com" {
server.document-root = "/var/www/web1/web"
alias.url = ( "/webdav" => "/var/www/web1/web" )
$HTTP["url"] =~ "^/webdav($|/)" {
dir-listing.activate = "enable"
webdav.activate = "enable"
webdav.is-readonly = "disable"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/var/www/web1/passwd.dav"
auth.require = ( "" => ( "method" => "basic",
"realm" => "webdav",
"require" => "valid-user" ) )
}
}
ポイント: alias.url と URL の正規表現により、/webdav アクセス時のみ WebDAV 機能が有効になります。それ以外のパスは通常のHTTPとして振る舞います。
編集後、lighttpd を再起動します:
/etc/init.d/lighttpd restart
重要な注意
- 既に passwd.dav が存在する場合は htpasswd の -c を使わないでください。ファイルが消えます。
- 本番ではベーシック認証は HTTPS と組み合わせて使ってください。
5 WebDAV のテスト
コマンドラインの WebDAV クライアント cadaver を使って動作確認します(例は RHEL/CentOS 系):
yum install cadaver
動作確認コマンド:
cadaver http://www.example.com/webdav/
ユーザー名で test、先ほど設定したパスワードを入力します。成功すれば WebDAV シェルに入れます。終了するには quit と入力します。例:
[root@server1 ~]# cadaver http://www.example.com/webdav/
Authentication required for webdav on server `www.example.com':
Username: test
Password:
dav:/webdav/> quit
Connection to `www.example.com' closed.
[root@server1 ~]#
6 Windows XP クライアントを WebDAV に接続する
詳細は外部ドキュメントにありますが、ポイントは次の通りです:
- URL にポート番号を明示してください。例: http://www.example.com:80/webdav
- ポートを入れることで Windows XP が通常のユーザー(test)を受け入れることがあります。ポートを入れない場合、XP は NTLM 形式(DOMAIN\user)を期待する挙動を示すことがあります。
- Windows のエクスプローラから「ネットワーク ドライブの割り当て」や「\<サーバ> への接続」で試せますが、OS のバージョンやアップデート状況で互換性が変わる点に注意してください。
7 Linux(GNOME)クライアントを接続する
GNOME(Nautilus)では「サーバへ接続」から dav プロトコルで接続できます。例:
- URI: dav://www.example.com/webdav または http://www.example.com/webdav
- 認証が必要な場合はプロンプトで test とパスワードを入力
または davfs2 を用いてシステムにマウントする方法もあります(fstab に設定して永続マウント可能)。
トラブルシューティング
- 認証エラー
- passwd.dav のパーミッションを確認(chmod 640 /chown root:lighttpd)。
- lighttpd がアクセスするユーザーが lighttpd グループに入っているか確認。
- 403/404 エラー
- alias.url と document-root のパスが正しいかを確認。
- webdav.activate が該当の URL ブロック内で有効か確認。
- SELinux を利用している場合
- SELinux が有効だとアクセスがブロックされる可能性があります。audit ログを確認し、必要なら boolean やファイルコンテキストを調整してください。
- Windows クライアント特有の問題
- XP の場合はポートを明示してみる。
- 資格情報がキャッシュされている場合は Windows の資格情報マネージャで確認・削除して再接続。
- SSL/鍵の問題
- HTTPS を利用する場合、証明書の信頼チェーンがクライアントで正しく設定されているかを確認。
代替アプローチと運用上の選択肢
- Apache + mod_dav を使う: より多機能でモジュールやドキュメントが豊富。
- davfs2 を使ってクライアント側でWebDAVをファイルシステムとしてマウントする(Linux)。
- ファイル共有用途であれば、SFTPやSMBを検討する。WebDAVはHTTPベースのためファイルロックや大ファイルの扱いに差異あり。
管理者向けチェックリスト
- /var/www/web1/passwd.dav を作成済み(-c は既存時に使用しない)
- passwd.dav の所有権とパーミッション設定済み(root:lighttpd, 640)
- lighttpd の vhost に webdav ブロックを追加
- lighttpd を再起動しエラーログを確認
- cadaver 等で接続テストを実施
- ファイアウォールでポート80/443 が開いているか確認
- HTTPS を導入する計画を立てる(本番推奨)
受け入れ基準
- cadaver または GUI クライアントで /webdav に接続できること
- 作成ユーザー(例:test)でファイルの読み書きができること(読み書き許可を付けた場合)
- 他の vhost パスは通常のHTTPとして動作すること
追加リンク
- WebDAV: http://www.webdav.org
- Lighttpd: http://www.lighttpd.net
- Fedora: http://fedoraproject.org
まとめ: 上記手順で WebDAV を /webdav に限定して有効にし、認証ファイルの適切なパーミッション管理、動作確認を行えば安全に運用を開始できます。運用ではHTTPS化、SELinux・ファイアウォールの確認、クライアント互換性の検証を必ず行ってください。