「WebDAV」の版間の差分
(同期) |
(同期) |
||
1行目: | 1行目: | ||
[[Category:ネットワーク]] |
[[Category:ネットワーク]] |
||
[[en:WebDAV]] |
[[en:WebDAV]] |
||
− | WebDAV ( |
+ | WebDAV (Web Distributed Authoring and Versioning) は HTTP 1.1の拡張でありプロトコルとも言えます。WebDAV は HTTP 1.1 プロトコルを用いて読み書きできる方法の拡張からなります。[[NFS]] や [[Samba|SMB]] の代わりに、WebDAV は HTTP によるファイル転送を提供します。 |
− | この記事では |
+ | この記事では[[:Category:ウェブサーバー|ウェブサーバー]]を使ってシンプルな WebDAV を設定します。 |
+ | == サーバー == |
||
− | [[en2:File Sharing with Webdav and DNSSD|Webdav と DNSSD によるファイル共有]]も参照。 |
||
− | == |
+ | === Apache === |
[[Apache HTTP Server]] をインストールしてください。 |
[[Apache HTTP Server]] をインストールしてください。 |
||
34行目: | 34行目: | ||
}} |
}} |
||
− | + | ディレクトリを作成: |
|
# 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 |
||
# chown -R http:http /home/httpd/html/dav |
# chown -R http:http /home/httpd/html/dav |
||
+ | ===Nginx=== |
||
− | == クライアント (Cadaver) == |
||
− | + | メインライン版の [[nginx]] と {{AUR|nginx-mainline-mod-dav-ext}} をインストールしてください。 |
|
+ | {{ic|/etc/nginx/nginx.conf}} のブロックの外側に、以下を追加: |
||
− | === テスト === |
||
+ | {{bc| |
||
+ | load_module /usr/lib/nginx/modules/ngx_http_dav_ext_module.so; |
||
+ | }} |
||
+ | |||
+ | {{ic|server}} ブロックに WebDAV の新しい {{ic|location}} を追加: |
||
+ | {{bc| |
||
+ | 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; |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | 上記の例では {{ic|/srv/http/dav}} と {{ic|/srv/client-temp}} ディレクトリが必要です。 |
||
+ | |||
+ | バインドマウントを使って WebDAV で他のディレクトリにアクセスできるようにすることもできます。 |
||
+ | |||
+ | == クライアント == |
||
+ | |||
+ | === Cadaver === |
||
+ | |||
+ | Cadaver は WebDAV 用のコマンドラインクライアントです。{{Pkg|cadaver}} パッケージでインストールすることができます。 |
||
+ | |||
+ | インストールしたら、WebDAV サーバーをテスト: |
||
# cadaver http://localhost/dav |
# cadaver http://localhost/dav |
||
dav:/dav/> mkcol test |
dav:/dav/> mkcol test |
||
54行目: | 88行目: | ||
Listing collection `/dav/': succeeded. |
Listing collection `/dav/': succeeded. |
||
Coll: test |
Coll: test |
||
− | dav:/dav/> exit |
||
+ | === Thunar === |
||
− | 上記のように表示されれば成功です。 |
||
+ | |||
+ | [[Thunar]] の中で {{ic|Ctrl+l}} を押して ''dav'' あるいは ''davs'' プロトコルのアドレスを入力してください: |
||
+ | |||
+ | davs://webdav.yandex.ru |
||
== 認証 == |
== 認証 == |
||
− | ディレクトリの表示と dav アクセスができるようにパーミッションを追加します。ssl アクセスのみにディレクトリを制限したほうがいいかもしれません。 |
||
− | + | 使用することができるプロトコルは以下の通りです: |
|
* plain |
* plain |
||
* digest |
* digest |
||
* others |
* others |
||
+ | === Apache === |
||
− | 以下に2つの例を示します。{{ic|foo}} はユーザ名です: |
||
digest を使う: |
digest を使う: |
||
# basic form: htdigest -c /path/to/file AuthName username |
# basic form: htdigest -c /path/to/file AuthName username |
||
− | htdigest -c /etc/httpd/conf/passwd WebDAV |
+ | htdigest -c /etc/httpd/conf/passwd WebDAV '''username''' |
{{Note|digest 認証が {{ic|httpd.conf}} で有効になっているか次のエントリが存在するかで確認してください: {{ic|LoadModule auth_digest_module modules/mod_auth_digest.so}}。}} |
{{Note|digest 認証が {{ic|httpd.conf}} で有効になっているか次のエントリが存在するかで確認してください: {{ic|LoadModule auth_digest_module modules/mod_auth_digest.so}}。}} |
||
76行目: | 112行目: | ||
plain を使う: |
plain を使う: |
||
# basic form: htpasswd -c /path/to/file username |
# basic form: htpasswd -c /path/to/file username |
||
− | htpasswd -c /etc/httpd/conf/passwd |
+ | htpasswd -c /etc/httpd/conf/passwd '''username''' |
次に、{{ic|httpd.conf}} を編集して認証を有効にしてください。ひとつの方法はユーザー {{ic|foo}} に全てを必要とさせることです: |
次に、{{ic|httpd.conf}} を編集して認証を有効にしてください。ひとつの方法はユーザー {{ic|foo}} に全てを必要とさせることです: |
2017年10月16日 (月) 21:37時点における版
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 で他のディレクトリにアクセスできるようにすることもできます。
クライアント
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
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>
ディレクトリが誰からでも読み込みできるようにするには、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