「WebDAV」の版間の差分
カテゴリ変更 |
→サーバー: 同期 |
||
| 38行目: | 38行目: | ||
# mkdir -p /home/httpd/DAV |
# mkdir -p /home/httpd/DAV |
||
DavLockDB のディレクトリのパーミッションを変更し |
DavLockDB のディレクトリのパーミッションを変更し、{{ic|http}} ユーザーにより書き込みができるようにします: |
||
# chown -R http:http /home/httpd/DAV |
# chown -R http:http /home/httpd/DAV |
||
# mkdir -p /home/httpd/html/dav |
# mkdir -p /home/httpd/html/dav |
||
| 74行目: | 74行目: | ||
バインドマウントを使って WebDAV で他のディレクトリにアクセスできるようにすることもできます。 |
バインドマウントを使って WebDAV で他のディレクトリにアクセスできるようにすることもできます。 |
||
=== rclone === |
|||
{{Pkg|rclone}} パッケージを [[インストール]] します。リモートまたはローカルディレクトリのエクスポートをサポートしています [https://rclone.org/commands/rclone_serve_webdav/ WebDAV を使う] |
|||
認証なしで {{ic|/srv/http}} のコンテンツを提供するには: |
|||
$ rclone serve webdav /srv/http |
|||
=== Caddy === |
|||
{{AUR|caddy-webdav-git}} パッケージを [[インストール]] するか、{{AUR|xcaddy-bin}} を使用して WebDAV モジュールで [[Caddy]] をビルドします。 |
|||
$ xcaddy build --with github.com/mholt/caddy-webdav |
|||
ポート 80 を使用してパス {{ic|dav}} 上の {{ic|/srv/webdav}} のコンテンツを提供するには、次を [[Caddy#設定|Caddyfile]] に追加します。 |
|||
:80 { |
|||
rewrite /dav /dav/ |
|||
webdav /dav/* { |
|||
root /srv/webdav |
|||
prefix /dav |
|||
} |
|||
file_server |
|||
} |
|||
次に [[Caddy#使用方法|Caddy を実行]]: |
|||
$ caddy run |
|||
== クライアント == |
== クライアント == |
||
2023年5月27日 (土) 15:49時点における版
WebDAV (Web Distributed Authoring and Versioning) は HTTP 1.1の拡張でありプロトコルとも言えます。WebDAV は HTTP 1.1 プロトコルを用いて読み書きできる方法の拡張からなります。NFS や SMB の代わりに、WebDAV は HTTP によるファイル転送を提供します。
この記事ではウェブサーバーを使ってシンプルな 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 のディレクトリのパーミッションを変更し、http ユーザーにより書き込みができるようにします:
# chown -R http:http /home/httpd/DAV # mkdir -p /home/httpd/html/dav # chown -R http:http /home/httpd/html/dav
Nginx
メインライン版の nginx と nginx-mainline-mod-dav-extAUR をインストールしてください。
/etc/nginx/nginx.conf のブロックの外側に、以下を追加:
load_module /usr/lib/nginx/modules/ngx_http_dav_ext_module.so;
server ブロックに WebDAV の新しい location を追加:
location /dav {
root /srv/http;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS;
# Adjust as desired:
dav_access all:rw;
client_max_body_size 0;
create_full_put_path on;
client_body_temp_path /srv/client-temp;
autoindex on;
allow 192.168.178.0/24;
deny all;
}
上記の例では /srv/http/dav と /srv/client-temp ディレクトリが必要です。
バインドマウントを使って WebDAV で他のディレクトリにアクセスできるようにすることもできます。
rclone
rclone パッケージを インストール します。リモートまたはローカルディレクトリのエクスポートをサポートしています WebDAV を使う
認証なしで /srv/http のコンテンツを提供するには:
$ rclone serve webdav /srv/http
Caddy
caddy-webdav-gitAUR パッケージを インストール するか、xcaddy-binAUR を使用して WebDAV モジュールで Caddy をビルドします。
$ xcaddy build --with github.com/mholt/caddy-webdav
ポート 80 を使用してパス dav 上の /srv/webdav のコンテンツを提供するには、次を Caddyfile に追加します。
:80 {
rewrite /dav /dav/
webdav /dav/* {
root /srv/webdav
prefix /dav
}
file_server
}
次に Caddy を実行:
$ caddy run
クライアント
Cadaver
Cadaver は WebDAV 用のコマンドラインクライアントです。cadaver パッケージでインストールすることができます。
インストールしたら、WebDAV サーバーをテスト:
# cadaver http://localhost/dav dav:/dav/> mkcol test Creating `test': succeeded. dav:/dav/> ls Listing collection `/dav/': succeeded. Coll: test
Thunar
Thunar の中で Ctrl+l を押して dav あるいは davs プロトコルのアドレスを入力してください:
davs://webdav.yandex.ru
認証
使用することができるプロトコルは以下の通りです:
- plain
- digest
- others
Apache
digest を使う:
# basic form: htdigest -c /path/to/file AuthName username htdigest -c /etc/httpd/conf/passwd WebDAV username
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 username
次に、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 のパスが上記の 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