ファイル共有ツー ルWebDAVのインストール

 自宅サーバーでのファイル共有は、自宅内は当然であるが会社などインターネット越しに出来れば大変便利である。
ファイル共有は通常SAMBAを使うが、これはネットワーク内だと良いのだがインチーネット越しとなると開くポートが増えてしまいセキュリティ面から好ま しくない。

 これを回避する方法としてMicrosoftが提唱している80番ポートを利用するWebDAVというものがあることがわかったのでインス チールしてみた。

 方法はごく簡単でTurbplinux7の場合は、apacheの設定を変更する、つまり /etc/httpd/conf/httpd.conf を少し変えるだけで良い。

(1) apache と mod_dav パッケージがインストールされている事を確認する。

# rpm -q apache
# rpm -q mod_dav

(2) dev_module と encoding_module が apache の httpd.conf ファイルに定義されて
いることを確認する。

この設定は、初期状態で記述されていますので、特に編集する必要はない。

[/etc/httpd/conf/httpd.conf]
-------------------------------------------------------------------
LoadModule dav_module /usr/libexec/apache/libdav.so
LoadModule encoding_module /usr/libexec/apache/mod_encoding.so
...(省略)
AddModule mod_dav.c
AddModule mod_encoding.c
-------------------------------------------------------------------

(3) httpd.conf にWebDAVの設定を追記します。

[/etc/httpd/conf/httpd.conf]
-----------------------------------------
#
# WebDAV setting
#
<IfModule mod_dav.c>
DAVLockDB "/var/lock/apache/DAVLock"
DAVMinTimeout 600
<Location /WebDAV>
DAV On
</Location>
</IfModule>
-----------------------------------------
 
上記の例では、共有ファイルのディレクトリーは、/var/www/html/WebDAV/ となるが、別の所に起きたい場合は、

Alias /WebDAV /home3/dav

などと Alias 設定を行う。この場合注意が必要なのは、(5) で実施しているパーミッションの設定である。
ディレクトリーをどこに設定しようと設定するディレクトリーにこの設定を行っていなければアクセス時エラーとなる。
またリンクも機能しないようである。

(4) ロックファイルを作成する。

# cd /var/lock/
# mkdir apache
# touch apache/DAVLock
# chmod 640 apache/DAVLock
# chmod 700 apache
# chown -R apache.apache apache
RPMファイルの時のユーザーは apache である。

(5) ファイル共有ディレクトリを作成する。

# cd /var/www/html/
# mkdir WebDAV
# chmod 700 WebDAV
# chown apache.apache WebDAV

(6) httpd.conf に mod_encoding の設定を追記する。

mod_encoding を設定し、日本語ファイル名が扱えるようにする。
httpd.conf に以下の記述を追加してください。

[/etc/httpd/conf/httpd.conf]
--------------------------------------------------
<IfModule mod_encoding.c>
EncodingEngine on
SetServerEncoding UTF-8

AddClientEncoding SJIS "Microsoft .* DAV"
AddClientEncoding SJIS "xdwin9x/"
AddClientEncoding EUC-JP "cadaver/"
</IfModule>
--------------------------------------------------

AddClientEncoding行には、各クライアントの UserAgent 名とエンコーディングを追加
する。

(7) 動作確認

WebDAV クライアントからアクセスし、ファイルの共有が正常に動作することを確認し
てください。各クライアントの設定方法につきましては、各クライアントに付属の
マニュアル類をご参照ください。

Windows2000の場合:
「マイネットワーク」を開き、「ネットワークプレースの追加」を開きます。すると、
「ネットワークプレースの追加ウィザード」が開始されますので、指示に従って設定を
行ってください。設定が完了すると、「マイネットワーク」にネットワークプレースが
追加されています。これを開き、ファイルをドラック&ドロップする事によってファイル
を送受信することが可能です。

Linux の場合
○CUIによる場合
Linuxクライアントからは、通常FTPライクなCadaverと言うクライアントモジュー ルを使用する。このモジュールは、例えばRedHat系ならRPMで用意されてるはずである。ソースなら、 ここ からゲットする。
./configureしてmake、make installでコンパイル&ビルド出来るはずである。

# cadaver http://www.hogehoge.com/dav/
Username: mity
password: *********
dav: dav/>

このような感じのプロンプトがでるここから通常のFTPコマンドで運用すればよい。
抜ける場合は、

dav: dav/> quit

で抜ける。

○GUIによる場合
GNOMEデスク トップ等のGUIからの利用では、DAVExploroerというユーティリティを利用する と便利だ。
DAVExploroerは、 ここ からダウンロードする。

2004年7月時点ではDAVExplorer-0.90.tar.gzが最新のソー スであった。

$ tar zxvf DAVExplorer-0.90.tar.gz

$ cd DAVExplorer-0.90

$ ./DAVExplorer-0.90.sh &

で上のイメージで起動する。ただし、JAVAで作ってあるのでjsdkが必要である。
j2sdk-1_3_1_10-linux-i586.rpm.binなどをインストールして以下のようにしてパスを通しておく。

export JAVA_HOME=/usr/java/jdk1.3.1_10
export PATH=$PATH:$JAVA_HOME/bin

これは /etc/rc.d/rc.local の最後の行に書いておくと起動の度に設定する必要がなくなる。

使い方は、全てメニューに従って行う。ただし、WIndowsのようにドラッグとかドロップやアプリ ケーションからの直接のアクセスは出来ないので一旦ファイルにしてどこかに保存したものをコピーするなどしてやりとりすることとなる。


(8) 認証の設定を行います。

このままでは誰でもアクセスできるので、セキュリティ上問題になります。
そこで WebDAV ディレクトリに基本認証機能を設定します。
(3) の設定部分を以下のように変更してください。

[/etc/httpd/conf/httpd.conf]
-------------------------------------------------------------------------------
#
# WebDAV setting
#
<IfModule mod_dav.c>
DAVLockDB "/var/lock/apache/DAVLock"
DAVMinTimeout 600
<Location /WebDAV>
DAV On

AllowOverride None
Options None
AuthUserFile /var/www/DAVUsers
AuthGroupFile /dev/null
AuthName PublicFolder
AuthType Basic
# 指定ユーザのみ読み書きが可能となる設定
<Limit HEAD PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user davuser
</Limit>

# 書き込み時のみ認証を実行する設定
# <LimitExcept GET HEAD OPTIONS>
# Require valid-user
# </LimitExcept>
</Location>
</IfModule>
-------------------------------------------------------------------------------

(9) 認証ファイルの作成とユーザの追加

/var/www/DAVUsers に davuser ユーザを追加します。

# htpasswd -c /var/www/DAVUsers davuser
これで インターネットから自宅サーバーとファイル共有が可能となった。

WindowsXPをクライアントとする場合の留意事項
WindowsXPのユーザー認証は、IDパスワード入力ウィンドウにIDを入力してもサーバーへは
ホスト名\IDが送られてしまいサーバー側の登録ユーザーにはないことから認証不成立となりアクセスでき ないと言う問題が発生した。

ネットを検索してみるといくつか方法があり、一つ目は
/etc/httpd/conf/httpd.conf の mod_encoding の設定記述欄に
NormalizeUsername on
を記載することで送られてくるホスト名を削除して認証する方法であるが、私の環境では何故かapacheが拒否してしまい使用できなかった。

 そこでもう一つの方法である、http://192.168.0.100/WebDAV? と最後に?をつける方法があるようでこ れだと成功した。
 認証時に下の画面が出てこなければ成功のようである。

認証画面

参考とした ページ