5. WebDAV サーバ管理

このセクションでは、例えばアクセス制御のための LDAP 設定や、 Apache 上での DAV メソッドの設定などの、 いろいろな管理タスクについて説明します。

DAV に関する設定変更の大部分は、httpd.conf ファイル上で行われます。このファイルは、 /usr/local/apache/conf/httpd.conf にあります。

httpd.conf は、Apache が利用するテキストベースの 設定ファイルです。どんなテキストエディタでも編集できます - 私は vi が好みです。変更を行う前に、このファイルのバックアップ・コピー を取っておいてください。

httpd.conf に変更を加えたら、 /usr/local/apache/bin/apachectl restart コマンドで Apache サーバを再起動しなくてはなりません。しかし、再起動する前に /usr/local/apache/bin/apachectl configtest コマンドで httpd.conf に設定が正しく行われているか テストしてください。

5.1. DAV 共有機能へのアクセスを制限する

前のセクションで DAVtest 共有ディレクトリを作成した際に、 認証のために LDAP を使いました。しかしこの例では、 LDAP のユーザ ID/パスワードで認証できる人なら誰でも、 そのフォルダにアクセスできることになります。

httpd.conf ファイルに require ディレクティブを入れることで、特定のユーザや特定のユーザからなるグループ に対するアクセスを制限できます。

前のセクションの DAVtest に関する設定をもう一度見てみましょう。

  <Directory /usr/local/apache/htdocs/DAVtest>
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require valid-user
  </Limit>
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  </Directory>
require ディレクティブを valid-user にセットすれば、どの認証されたユーザでもこのフォルダにアクセスできます。

5.2. DAV 共有機能への書きこみアクセスを制限する

誰もが DAV の共有リソースを閲覧可能であっても、DAV の共有リソースの 編集機能を特定ユーザに限定する必要があるかもしれません。 これは httpd.conf ファイルに <Limit> タグを入れることで簡単に実現できます。


  <Directory /usr/local/apache/htdocs/DAVtest>
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require valid-user
  </Limit>
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  </Directory>

<limit> を以下のように変えることで、 特定ユーザに書きこみアクセスを制限します。

  <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require 334455
  </Limit>

要するに、PUT POST DELETE PROPPATH MKCOL COPY MOVE LOCK そして UNLOCK 機能は、UID が 334455 であるユーザだけが行えます。他の人は皆、 リソースに GET や PROPFIND メソッドを適用できますが、 その他のどのメソッドも適用できません。