OpenLDAP-2.4.28セットアップ。ベースDNと管理者DN

BigBlueButtonのセットアップで、仕方なくUbuntu LTS 12.04をインストールしたサーバーにOpenLDAPをセットアップする作業のお話。
適当にGoogleから調べてきて、
apt-get install slapd ldap-utils
する。
ついでにPHP LDAP ADMINも追加しておく
apt-get install phpldapadmin
んで、こんな感じとなった。

root@IPD-0197:~# dpkg -l | grep ldap                                                                      
ii  ldap-utils                         2.4.28-1.1ubuntu4.4                     OpenLDAP utilities         
ii  libaprutil1-ldap                   1.3.12+dfsg-3                           Apache Portable Runtime Utility Library - LDAP Driver
ii  libldap-2.4-2                      2.4.28-1.1ubuntu4.4                     OpenLDAP libraries         
ii  libldap2-dev                       2.4.28-1.1ubuntu4.4                     OpenLDAP development libraries
ii  php5-ldap                          5.3.10-1ubuntu3.10                      LDAP module for php5       
ii  phpldapadmin                       1.2.2-4ubuntu1                          web based interface for administering LDAP servers

稼動状況は?

root@IPD-0197:~# ps ax | grep ldap                                                                        
13773 ?        Ssl    0:00 /usr/sbin/slapd -h ldap:/// ldapi:/// -g openldap -u openldap -F /etc/ldap/slapd.d

バージョンは何が入ったのかな?

root@IPD-0197:~# slapd -V
@(#) $OpenLDAP: slapd  (Sep 19 2013 22:39:38) $
        buildd@panlong:/build/buildd/openldap-2.4.28/debian/build/servers/slapd

なるほど。
では、ベースサフィックスとかRootDNとかRootPWとかを設定しようかな。と思ったんだけど….
いつものslapd.confが無い、???????? あれれ、どこに入ったのかな。

root@IPD-0197:~# ls /etc/ldap/                                                                            
ldap.conf  sasl2  schema  slapd.d

早くも途方にくれる。・・・・google先生によると、

OpenLDAPは、バージョンによって設定の方法が変わっています。OpenLDAP 2.2までは、設定ファイルslapd.confに定義していましたが、2.3以降で非推奨となり、変わってディレクトリサーバーのデータとして設定を格納するようになりました。

との事。

なんと、どうすればいいのやら。・・・ちょー面倒、なんですが。
UbuntuのOpenLDAPとホスト名 | frewqに解決方があった。
がしかし、slapd再インストールか、しかもcn=adminは固定で設定されるのかぁ・・・
う~ん、ちょっと微妙。
なんとかならんかなぁー

Google先生に相談する。
ぉお、いいページがあるではないですか!
CentOS 6にOpenLDAP環境を構築する
このページの手順に従ってがんばってみよう。

OpenLDAP Software 2.4 Administrator’s Guide: Configuring slapd
このページも、泣きながらざっくりと斜め読みする。

どうやら、olcRootDNとolcRootPWというものを変更すればなんとかなりそうだ。ちょっと調べてみる

root@IPD-0197:~# cd /etc/ldap/slapd.d/cn\=config
root@IPD-0197:/etc/ldap/slapd.d/cn=config# grep -r "Root" *                                               
olcDatabase={1}hdb.ldif:olcRootDN: cn=admin,dc=nodomain                                                   
olcDatabase={1}hdb.ldif:olcRootPW:: e1NTSEF9NjQxc0tnNTlQVjBGN3pFb3JLZ1BhM24vS05COFdvL2Q=

あるでないか、

root@IPD-0197:/etc/ldap/slapd.d/cn=config# cat olcDatabase\=\{1\}hdb.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 67015442
dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=nodomain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=nodomain" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=nodomain" write by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=nodomain
olcRootPW:: e1NTSEF9NjQxc0tnNTlQVjBGN3pFb3JLZ1BhM24vS05COFdvL2Q=
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq
structuralObjectClass: olcHdbConfig
entryUUID: 2491420a-4c2e-1033-85e5-6f7189c094d6
creatorsName: cn=config
createTimestamp: 20140330080755Z
entryCSN: 20140330080755.294942Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20140330080755Z

で、ページにしたがって、change.ldifというファイルを作成する。

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ramuda,dc=co,dc=jp

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=xxxxxx,dc=ramuda,dc=co,dc=jp

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}MFceE6Hfd2NpDvuTo36CGPl9ATCnUZUX

おし、これで終わりだ!

root@IPD-0197:~# ldapmodify -x -D "cn=admin,dc=nodomain" -W -f change.ldif

すると、「ldap_modify: Insufficient access (50)」とお叱りを受けてしまう。
やれやれ、また調べる。
openldap – ldap_modify: Insufficient access (50) – Server Faultに書いてあった。

To do modifications like these you need to work with an account privileged enough to modify the various databases. The “admin” account, i.e. the one account that always has all privileges, is specified in the attribute olcRootDN and its password is found in olcRootPW. For the cn=config database those attributes are found in olcDatabase={0}config,cn=config and for the “regular” database, usually of type HDB, in olcDatabase={1}hdb,cn=config.

cn=configでなければ権限が無い。マニュアルをよく読め!ということらしい。
よく見ると、olcDatabase={0}config.ldifというファイルがある。

root@IPD-0197:/etc/ldap/slapd.d/cn=config# cat olcDatabase\=\{0\}config.ldif                              
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 c9d4f50a
dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth manage by * break
structuralObjectClass: olcDatabaseConfig
entryUUID: 248ba17e-4c2e-1033-85dd-6f7189c094d6
creatorsName: cn=config
createTimestamp: 20140330080755Z
entryCSN: 20140330080755.258063Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20140330080755Z

がolcRootDNとolcRootDNが無いので、viで直接編集で
olcRootDN: cn=config
olcRootPW: {SSHA}MFceE6Hfd2NpDvuTo36CGPl9ATCnUZUX
の二行を追加してセーブする。
slapdを再起動して、アクセス確認する。

root@IPD-0197:/etc/ldap/slapd.d/cn=config# /etc/init.d/slapd restart
 * Stopping OpenLDAP slapd                                                                                                                                                                                   [ OK ]
 * Starting OpenLDAP slapd                                                                                                                                                                                   [ OK ]
root@IPD-0197:/etc/ldap/slapd.d/cn=config# ldapsearch -x -LLL -D "cn=config" -W -b "cn=config" '(objectClass=*)'
Enter LDAP Password: 

 (中略)

olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq

おっし、できた。
では、改めまして

root@IPD-0197:/etc/ldap/slapd.d/cn=config# ldapmodify -x -D cn=config -W -f change.ldif 
Enter LDAP Password: 
modifying entry "olcDatabase={1}hdb,cn=config"

modifying entry "olcDatabase={1}hdb,cn=config"

modifying entry "olcDatabase={1}hdb,cn=config"

どうかな

root@IPD-0197:/etc/ldap/slapd.d/cn=config# cat olcDatabase\=\{1\}hdb.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 669d0f61
dn: olcDatabase={1}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=nodomain" write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=nodomain" write by * read
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq
structuralObjectClass: olcHdbConfig
entryUUID: 2491420a-4c2e-1033-85e5-6f7189c094d6
creatorsName: cn=config
createTimestamp: 20140330080755Z
olcSuffix: dc=ramuda,dc=co,dc=jp
olcRootDN: cn=xxxxxx,dc=ramuda,dc=co,dc=jp
olcRootPW:: e1NTSEF9TUZjZUU2SGZkMk5wRHZ1VG8zNkNHUGw5QVRDblVaVVg=
entryCSN: 20140405094015.730603Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20140405094015Z

おっけー

コメントを残す

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

*

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