# WebDAV (日本語)

WeBDAV(Web Distributed Authoring and Versioning) はHTTP 1.1の拡張及びプロトコルです｡これは､一式のコンセプトと､HTTP 1.1を用いての読み込み/書き込みをするエクステンションから成ります｡ この記事では､Apache を使ってシンプルWebDAVを設定することが最終目標です｡

加えて File Sharing with Webdav and DNSSD を見てください｡

## サーバ (Apache)

Apache のインストールに関して説明された LAMP の記事を読み､Apache をインストールします｡ WebDAV を有効化するために､ `/etc/httpd/conf/httpd.conf` に次の一文を加えます:

    DAVLockDB /home/httpd/DAV/DAVLock

Make sure you add it outside of any other directives, for instance right under the `DocumentRoot` definition.

Next, add the following (also outside of any directives):

    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 # これが正しくないとファイルをアップロードできません｡

    # mkdir -p /home/httpd/html/dav
    # chown -R nobody.nobody /home/httpd/html/dav

## クライアント (Cadaver)

Cadaver は WebDAV 用のコマンドラインクライアントです｡ Official Repositories より､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` を編集しなければんりません｡一つの方法は､ユーザーに全てを入力させることです:

    <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` は `htdigest` を使った時の名前と一致でなければなりません｡basic/plain関して､この一文を削除し､上記のコマンドを `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 (日本語)