WebDAV (日本語) - ArchWiki

# WebDAV (日本語)

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

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

File Sharing with Webdav and 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 nobody.nobody /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

Note: 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>

Note: `AuthName` は digest 認証のときに `htdigest` コマンドで使った名前と同じである必要があります。basic/plain 認証の場合、この行は削除できます。また、`AuthUserFile` のパスが上記の `htdigest` や `htpasswd` で使用したパスと一致するようにしてください。

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

Category:

- Networking (日本語)