ファイルサーバを作ってみた WebDAV&LDAP連携編

さて、これでリモートからのアクセスが可能になったのはいいんだけども、ぶっちゃけいちいち新規利用ユーザが増えるたびにhtpasswdでユーザを追加しないといけないのはめんどくさい。
じゃあLDAP使えばいいじゃない、という話でmod_ldapを利用することに。
ところが、aptitude search mod_ldapとかしても出てこない。
とりあえずapacheのモジュールディレクトリを眺めてると、authnz_ldapとかいうのが入ってるみたい。
ということでこれを使う。

いくらか試行錯誤して、とりあえずLDAP登録ユーザの認証はできるようになった。
が、ゲストアカウントを作りたいっていうのがあり、そこをどうするかで悩んだ。
結論として、Limitディレクティブを使えば解決ということになった。

とりあえず、ログを眺めて発行されるHTTPメソッドをうだうだ眺めてみた。

PROPFIND ファイル一覧表示
GET ダウンロード
MKCOL ディレクトリ作成
PUT ファイル作成
PROPPATCH ファイル変更
DELETE 削除
LOCK ロック
UNLOCK ロック解除
MOVE 移動
OPTIONS 発行可能なコマンド表示

たぶんこんな感じっぽい。
ということで、読み込み可能なだけなユーザはGET PROPFIND OPTIONSだけでいいっぽいだろうということになった。
それらをふまえた設定が以下のようなかんじ。

# for file server
<IfModule mod_ssl.c>
<VirtualHost 192.168.1.x:443>
ServerName xxx.waterblue.net:443
SSLEngine on

DocumentRoot /mnt/fileserver

<Location />
DAV on
SSLRequireSSL
AuthType Basic
AuthName “waterblue file server”
AuthBasicProvider ldap
AuthLDAPURL “ldap://192.168.1.x/ou=People,dc=waterblue,dc=net”
AuthLDAPRemoteUserIsDN off

Options FollowSymLinks
Require ldap-user “hoge”
Require ldap-user “fuge”

<Limit GET PROPFIND OPTIONS>
Require ldap-user “poge”
</Limit>
</Location>
<Location /incoming>
Require valid-user
</Location>
</VirtualHost>
</IfModule>

AuthBasicProviderをldapで指定してやれば、 AuthLDAPURLで指定したLDAPサーバに認証情報を取りに行く。
AuthLDAPURLは、ldap://LDAPサーバ/検索ドメイン?検索キー?サブツリーチェック?フィルタな感じ。
検索キーとかはデフォルトだと?uid?sub?(ObjectClass=*)みたいなかんじだった。
その辺は各自自分の都合のいいように変えましょう。

久々にがんばった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>