LDAP のスレーブを設定したのですが、くだらないところで引っかかったので記録しておく。
最終的にはこんな感じでOKになりました。
プロバイダ(マスター)側設定(openldap-2.3.43-25.el5_8.1)
$ cat /etc/openldap/slapd.conf #以下抜粋 # index 関係の設定 index entryCSN,entryUUID eq # syncprov の設定 overlay syncprov syncprov-sessionlog 100
コンシューマ(スレーブ)側設定(openldap-2.3.43-25.el5_8.1)
$ cat /etc/openldap/slapd.conf #以下抜粋 # index 関係の設定 index entryCSN,entryUUID eq # syncrepl 関係の設定 syncrepl rid=001 provider=ldap://192.168.1.153 type=refreshOnly interval=00:00:03:00 searchbase="dc=fuuu,dc=example,dc=net" scope=sub bindmethod=simple binddn="cn=rootdn,dc=fuuu,dc=example,dc=net" credentials=fugafuga
どこがダメだったかというと…。
# syncrepl 関係の設定で syncrepl rid=001 provider=ldap://192.168.1.153 type=refreshOnly interval=00:00:03:00 searchbase="dc=fuuu,dc=example,dc=net" scope=sub # こんな感じでコメントしたり # attrs="*" bindmethod=simple binddn="cn=rootdn,dc=fuuu,dc=example,dc=net" credentials=fugafuga
こんな感じで、設定項目を付けたり外したりをコメントアウトでやってたんですが。どうもうまく設定ができていない。具体的にはrootdn(全ての要素にフルアクセス可)でアクセスしているはずなのにACLで制限のある要素が取得出来ない。(パスワード関係の要素はアクセス制限をかけてあるが、スレーブLDAPサーバなので全ての要素を取得したい。)
なぜダメかと、しばらく悩んだ結果。
海外のメーリングリストで『この設定は1行で…』(http://www.openldap.org/lists/openldap-software/200809/msg00156.html)というのを見かけて、実はこの設定項目複数行で設定してそうだけど、1行の設定を(行頭のスペースで前の行の続きを表すという書き方をして)複数行に書いてあるだけということに気づいたのでした。
これと同義。
syncrepl rid=001 provider=ldap://192.168.1.153 type=refreshOnly interval=00:00:03:00 searchbase="dc=fuuu,dc=example,dc=net" scope=sub# こんな感じでコメントしたりすると# attrs="*" bindmethod=simple binddn="cn=rootdn,dc=fuuu,dc=example,dc=net" credentials=fugafuga
こんな感じで、#以降がコメントになってしまって、ダメなのでした。
binddn以下がコメントになってると、anonymousでLDAP接続してアクセス制限のある項目がみえなくなるので正しい動きだったのでした。
はー、悩んだ!!