WebDAV

提供: ArchWiki
移動先: 案内検索

WebDAV (Web Distributed Authoring and Versioning) は HTTP 1.1の拡張でありプロトコルとも言えます。WebDAV は HTTP 1.1 プロトコルを用いて読み書きできる方法の拡張からなります。NFSSMB の代わりに、WebDAV は HTTP によるファイル転送を提供します。

この記事では、Apache を使ってシンプルな WebDAV を設定することが目標です。

Webdav と DNSSD によるファイル共有も参照。

サーバー (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
ノート: digest 認証が httpd.conf で有効になっているか次のエントリが存在するかで確認してください: LoadModule auth_digest_module modules/mod_auth_digest.so

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>
ノート: AuthName は digest 認証のときに htdigest コマンドで使った名前と同じである必要があります。basic/plain 認証の場合、この行は削除できます。また、AuthUserFile のパスが上記の htdigesthtpasswd で使用したパスと一致するようにしてください。

ディレクトリが誰からでも読み込みできるようにするには、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