読者です 読者をやめる 読者になる 読者になる

AS2500の最果てで

AS2500のどっかのNOCのまとまらないまとめ

OpenLDAP on CentOS6

OpenLDAPをセットアップする機会がやってきたので初めてだけどトライしてみた時にものすごく嵌ったので世の中爆発してくださいということ。

/etc/openldap/slapd.conf ???

とりあえず "openldap centos6" とかで適当に検索して出てくるような入門サイトを片っ端から眺めていって /etc/openldap/slapd.conf を簡単に書いてみたわけですよ。
slaptestもDB_CONFIGが無いとかmonitorが云々言ってくるけど最後に問題ないって言ってくれてたので、そのまま service slapd start するわけですよ。

しかしおかしい。ldapaddでou=Peopleとか突っ込もうとしても Invalid Credentials(49) と言われるわけだ。
試行錯誤して色々いじってみてもなんにも変わらんから /etc/rsyslog.conf に

local4.*	/var/log/slapd.log

とか書いてログを眺めるわけだ。

BINDのRESULTでerr=49が出てくることはわかってるんだけど肝心の理由がわからんから slapd.conf に loglevel 0x180 って追記してみるわけだ。
これで認証周りのことが出てくるはずだからなにかしら情報が得られると。

しかしいくらrestartかけてみたりしてもログの内容は変わらない。それどころか loglevel 0x80 とかstatsを表示しない様にしても結局ログはstatsのみ出力し続ける。

そこではたと気づいた。

もしかして、slapd.conf読んでない...?

試しに /etc/openldap/slapd.conf を消してみて service slapd restart とするとさも当然とでも言わんばかりにslapdは起動する。

slapd.confが無い - takutism
これによると slapd に -f /path/to/slapd.conf を投げるといいらしい。

/etc/init.d/slapd を読むと checkconfigとかは [ -f $configfile ] とか見てて /etc/openldap/slapd.conf に関して見てるけど、start()内では /etc/openldap/slapd.conf なんてなかったかのように何もしてない。
せめて

if [ -f $configfile ]; then
	harg="$harg -f $configfile"
fi

とかして見てくれてもいいものを...

とりあえず手動でさっきのを追加して service slapd restart。
しかしslpadは起動しない。起動しない理由は何も言わないし、当然 /var/log/slapd.log には何も書き込まない。

どうやらOpenLDAP 2.4からはslapd.confではなく/etc/openldap/slapd.d/にconfigを書いていくようだ。slapd.confの路線は全くイミワカラン挙動するので諦めて情報の無い slapd.d をいじることにする。

slapd.d/cn=config/ 以下のファイルの随所にある dc=my-domain,dc=com を自分の設定に書き換えた。
あと slapd.d/cn=config/olcDatabase={2}dbd.ldif に olcRootPW: {SSHA}xxxxxxxxxxxx を追加した({SSHA}xxxxxxxxxxxxはslappasswdで生成したやつ)。

まぁこれでとりあえずはいいような気がするのでこれで service slapd restart すると通ってくれた。

試しに ou=People とかldapaddで追加すると入ってくれた。

はー爆発してくれんかなぁ...

/var/lib/ldap/DB_CONFIG ???

なんかDB_CONFIGが無いとwarn出る。適当に検索すると /usr/share/doc/openldap-servers-2.4.19 に DB_CONFIG.example があるからこいつをそのまま使えばいいとか言うところばっかり見つかる。
CentOS6.2だとopenldap 2.4.23なので /usr/share/doc/openldap-servers-2.4.23 を眺めてみるが DB_CONFIG.example なんて見つからない。

ディストロによっては /etc/openldap/DB_CONFIG.sample だったりするらしいが当然そんなの見つからない。仕方ないので find / -name DB_CONFIG.example してみると /usr/share/openldap-servers/DB_CONFIG.example が見つかった。

はー爆発してくれんかなぁ...

まとめ

古い情報さんとっとと爆発してください。検索エンジンさん古い情報はpagerank高くても爆破してください。私が死にます。