WebDAV
WebDAV (Web Distributed Authoring and Versioning) は HTTP 1.1の拡張でありプロトコルとも言えます。WebDAV は HTTP 1.1 プロトコルを用いて読み書きできる方法の拡張からなります。NFS や SMB の代わりに、WebDAV は HTTP によるファイル転送を提供します。
この記事では、Apache を使ってシンプルな WebDAV を設定することが目標です。
サーバー (Apache)
Apache HTTP Server をインストールしてください。
そして WebDAV を有効化します。DAV のモジュールをアンコメント:
LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_lock_module modules/mod_dav_lock.so
以下の行を /etc/httpd/conf/httpd.conf
に追加:
DAVLockDB /home/httpd/DAV/DAVLock
他のディレクティブ (例えば DocumentRoot
定義のすぐ下など) の外に追加するようにしてください。
次に、以下を追加 (これもディレクティブの外に):
Alias /dav "/home/httpd/html/dav" <Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks Require all granted </Directory>
ディレクトリを作成
# mkdir -p /home/httpd/DAV
DavLockDB のディレクトリのパーミッションを確認し、apache ユーザー (http) により書き込みができることを確認します:
# chown -R http:http /home/httpd/DAV # Otherwise you wouldn't be able to upload files
# mkdir -p /home/httpd/html/dav # chown -R http:http /home/httpd/html/dav
クライアント (Cadaver)
Cadaver は WebDAV 用のコマンドラインクライアントです。公式リポジトリの cadaver パッケージでインストールすることができます。
テスト
# cadaver http://localhost/dav dav:/dav/> mkcol test Creating `test': succeeded. dav:/dav/> ls Listing collection `/dav/': succeeded. Coll: test dav:/dav/> exit
上記のように表示されれば成功です。
認証
ディレクトリの表示と dav アクセスができるようにパーミッションを追加します。ssl アクセスのみにディレクトリを制限したほうがいいかもしれません。
以下は使用することができるプロトコルです:
- plain
- digest
- others
以下に2つの例を示します。foo
はユーザ名です:
digest を使う:
# basic form: htdigest -c /path/to/file AuthName username htdigest -c /etc/httpd/conf/passwd WebDAV foo
plain を使う:
# basic form: htpasswd -c /path/to/file username htpasswd -c /etc/httpd/conf/passwd foo
次に、httpd.conf
を編集して認証を有効にしてください。ひとつの方法はユーザー foo
に全てを必要とさせることです:
<Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks AuthType Digest # substitute "Basic" for "Digest" if you used htpasswd above AuthName "WebDAV" AuthUserFile /etc/httpd/conf/passwd Require user foo </Directory>
ディレクトリが誰からでも読み込みできるようにするには、httpd.conf
に以下を記述します:
<Directory "/home/httpd/html/dav"> DAV On AllowOverride None Options Indexes FollowSymLinks AuthType Digest # substitute "Basic" for "Digest" if you used htpasswd above AuthName "WebDAV" AuthUserFile /etc/httpd/conf/passwd Require all granted <LimitExcept GET HEAD OPTIONS PROPFIND> Require user foo </LimitExcept> </Directory>
変更を加えた後は必ず apache を再起動してください:
# systemctl restart httpd