CentOS5(RHEL5)+LDAP+Apache2+WebDAV+Subversion設定メモ

LDAPの設定

設定に関してはLDAPによるパスワードの一元管理を参考にすればよいが、一点注意が必要。
記事中ではuserPassword属性に関するアクセス制限が

 access to attribute=userPassword
        by self write
        by dn="cn=root,dc=itboost,dc=co,dc=jp" write
        by anonymous auth
        by * none

となっているが、CentOS5で標準のopenldap-2.3.27では

 access to attrs=userPassword
        by self write
        by dn="cn=root,dc=itboost,dc=co,dc=jp" write
        by anonymous auth
        by * none

とattributeの代わりにattrsを使う必要がある。

Apache2+WebDAV

バーチャルホストの設定はこんな感じ

<VirtualHost svn.example.com>
<Location "/">
DAV svn
SVNListParentPath on
SVNParentPath /var/repos
AuthType Basic
AuthBasicProvider ldap
AuthName "Subversion Repository Server"
AuthzLDAPAuthoritative  off
AuthLDAPURL     ldap://ldap.example.com/ou=People,dc=example,dc=com?uid
require valid-user
</Location>
</VirtualHost>

DAVディレクティブはディレクトリコンテキスト*1なので、Directory,Location,Fileの中にいれる必要がありますが、Directoryで指定したディレクトリとSVNParentPath,SVNPathで指定したディレクトリが同一だと301エラーが出ます。そのため、Locationディレクティブを利用するのが適当だと思います。
LDAP認証についてはResuire valid-userを利用する場合は、AuthzLDAPAuthoritativeをoffにする必要があるのが注意点となります。

レポジトリ作成簡易スクリプト

/var/reposに新規レポジトリを作成する簡易スクリプト

#!/bin/bash

if [ $UID -eq 0 ];then
/usr/bin/svnadmin create /var/repos/$1
/usr/bin/svn import -m 'import skelton' /usr/share/subversion/skel file:///var/repos/$1
/bin/chown apache:apache /var/repos/$1
else
sudo $0 $1

fi

root以外で使うにはvisudoでこのスクリプトをsudoで使えるようにする。*2

*1:Directory,Location,Fileコンテナの中でしか使えない

*2:セキュリティ上問題あるので注意が必要