2004/11/29

ApacheのWebdavでXPから共有(apache1.3編)(FreeBSD, Internet, Web)

はじめに

自宅と会社で楽にファイルの受け渡しができるように、Webdavを入れました。

Apache 1.3+Webdavは比較的多くのサイトで構築方法が紹介されていますが、私も便乗して公開します。

構築した際のサーバ・クライアントの情報は以下の通りです。

■サーバ

  • FreeBSD 5.3-RELEASE-p1
  • Apache 1.3.33-1
  • mod_dav-1.0.3_2
  • mod_encoding-20021209_1

■クライアント

  • Windows XP Professional SP2

Windows XPからBasic認証で失敗する人必読です。

mod_dav,mod_encodingのインストール

apacheは既にインストールされている事を前提で記述します。portsコレクションを最新にして、mod_dav,mod_encodingをインストールして下さい。mod_davはWebdavの本体モジュール、mod_encodingはWebdavで日本語ファイル名を使用する為に追加します。

# portinstall mod_dav
# portinstall mod_encoding

自動的にmod_davのLOCKディレクトリ及びファイルも適切なパーミッションで/var/db配下に作成されます。後は/usr/local/etc/apache/httpd.confを設定するだけです。

/usr/local/etc/apache/apache.conf.mod_davというサンプルファイルも作成されますが、これはmod_encodingについての記述は無いので、参考にはしないことにします。

環境設定

Webdavの動作環境として以下の条件で設定する場合の設定を説明することにします。

  • アクセスURL
    http://www.hijiki.net/dav/
  • 実体のディレクトリ
    /share/dav/
  • 認証方法
    専用のユーザ名とパスワードによるBasic認証

実体ディレクトリの作成

/share/davディレクトリを作成します。ディレクトリのパーミッションはApacheが動作しているデフォルトのユーザ・グループで作成します。httpd.confのUser,Groupで指定しているユーザ・グループです。通常はwww:wwwになっていると思いますので、そのパーミッションで作成します。

# cd /share
# mkdir ./dav
# chown www:www ./dav
# chmod 750 ./dav

ユーザの作成

この後指定するhttpd.confの設定と合わせれば別にどこに作成してもいいのですが、アカウント情報を/etc/webdav.passwdという名前で作成します。

ユーザ名とパスワードの作成は「htpasswd」というapacheに標準で含まれるコマンドを使用します。一人目のユーザを登録するときには-cオプションを付けて、ファイルの新規作成後にアカウント登録する形になります。以下の例では二人ユーザを登録しています。

# htpasswd -c /etc/webdav.passwd user1
New password:(パスワード入力)
Re-type new password:(パスワード入力)
Adding password for user user1
# htpasswd /etc/webdav.passwd user2
New password:(パスワード入力)
Re-type new password:(パスワード入力)
Adding password for user user2

このパスワードファイルもオーナーはwww(apacheデフォルトの場合)しか読み取れなくていいのでwww:wwwで他のユーザのパーミッションを外してしまいましょう。

# chown www:www /etc/webdav.passwd
# chmod 700 /etc/webdav.passwd

httpd.confの設定

httpd.confは以下の様に設定してください。

/usr/local/etc/apache/httpd.conf
LoadModule dav_module      libexec/apache/libdav.so
LoadModule encoding_module libexec/apache/mod_encoding.so

AddModule mod_dav.c
AddModule mod_encoding.c

# webdav
<IfModule mod_headers.c>
   Header add MS-Author-Via "DAV"
</IfModule>

<IfModule mod_encoding.c>
   EncodingEngine on
   NormalizeUsername on
   SetServerEncoding UTF-8
   DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
   AddClientEncoding "cadaver/" EUC-JP
</IfModule>

DAVLockDB /var/db/DAVLock
DAVMinTimeout 600

Alias /dav "/share/dav"

<Location /dav>
   DAV On
   AuthType Basic
   AuthName "Please Input ID and Password."
   AuthUserfile /etc/webdav.passwd
   <LimitExcept GET HEAD OPTIONS>
     Require valid-user
   </LimitExcept>
</Location>
      

NormalizeUsernameの指定はWindows XP独特の仕様変更で、Webdav認証時に「ホスト名\ユーザ名」として認証を試みる所をユーザ名だけで認証するために必要なパラメータです。

あとは、apachectl stopして、apachectl startすればWebdavが組み込まれたApacheが起動する筈です。

Windows XPからの共有

以下の手順で行います。

(1)マイネットワークから「ネットワークプレースの追加」を選択。

(2)ウイザード開始画面の「次へ」を選択

(3)「別のネットワークの場所を選択」を選び、「次へ」を選択

(4)URLの入力

URLに「http://www.hijiki.net/dav?」を入力

※URLの最後の「?」が重要です。これを入れないと先のユーザ認証で失敗します。

(5)ユーザ名、パスワードを入力

(6)ネットワークプレースの名前設定(すきな共有名)

(7)「完了」ボタンを押して終了

おわりに

Webdav共有は通常のファイル共有と違って、共有フォルダ上でファイルを開いたり実行したりはできませんが、遠隔地からファイルを共有する際にわざわざFTP等を使わないでも簡単に転送ができるのが良いと思います。

プロトコルにはHTTPを使用し、今回は認証もPlainなBasic認証なのでセキュリティ的にはどうかなと思いますが、便利に使えるので導入してみてはいかがでしょうか。

投稿者 yotan : 2004年11月29日 22:11| トラックバック(0)
アンケート
このエントリは・・・
とても役に立った
役に立った
どちらとも言えない
あまり役に立たなかった
全く役に立たなかった
コメント
コメントする

※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです










名前、アドレスを登録しますか?