CentOS5のOpenLDAP 2.3からRockyLinux8のOpenLDAP 2.4にLDAPサービスを移してみる. 2.4で「slapd.conf」は廃止予定とされ「cn=config」形式が推奨.
でも2.4でも「slapd.conf」でLDAPを作れるのだが、2.6が目に見えてきたので「cn=config」形式に乗り換えてみた次第.

  • RHEL8系 RockyLinux8 openldap-2.4.46
  • RHEL9系 RockyLinux9 openldap-2.6.2
  • ubuntu 18.04 LTS openldap-2.4.45
  • ubuntu 20.04 LTS openldap-2.4.49
  • ubuntu 22.04 LTS openldap-2.5.11

まずは簡単に CetnOS5 のopenLDAPでサービスを作ってみる.

[root@centos5 ~]# cat /etc/redhat-release
CentOS release 5.11 (Final)
 
[root@centos5 ~]# yum install openldap-servers openldap-clients -y
[root@centos5 ~]# /usr/sbin/slapd -VV
@(#) $OpenLDAP: slapd 2.3.43 (Sep 29 2015 06:22:05) $
        mockbuild@builder17.centos.org:/builddir/build/BUILD/openldap-2.3.43/openldap-2.3.43/build-servers/servers/slapd
 
[root@centos5 ~]#

sambaスキーマも載せたいのでスキーマ格納場所にコピーします. sambaスキーマを反映させた「slapd.conf」ファイルを作成します

[root@centos5 ~]# cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema/
 
[root@centos5 ~]# vi /etc/openldap/slapd.conf
 
[root@centos5 ~]# grep -v -e '^\s*#' -e '^\s*$' /etc/openldap/slapd.conf
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/samba.schema
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
modulepath      /usr/lib64/openldap
database        hdb
suffix          "dc=sybyl,dc=lab"
rootdn          "cn=manager,dc=sybyl,dc=lab"
rootpw          secret
directory       /var/lib/ldap
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet
        by anonymous auth
        by self write
        by * none
access to dn.base="" by * read
access to *
        by self write
        by * read
[root@centos5 ~]#

データベース(hdb:Hierarchical variant of bdb backend)向けのconfigファイルをコピーして、ldapサービスを稼働させます

[root@centos5 ~]# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@centos5 ~]# chown -R ldap. /var/lib/ldap/
[root@centos5 ~]# chmod 700 /var/lib/ldap/
 
[root@centos5 ~]# service ldap start
Starting slapd:                                            [  OK  ]
[root@centos5 ~]#
[root@centos5 ~]# ps -ef |grep ldap
ldap      3580     1  0 05:06 ?        00:00:00 /usr/sbin/slapd -h ldap:/// -u ldap
root      3585  3342  0 05:06 pts/0    00:00:00 grep ldap
[root@centos5 ~]#

コンテンツやsmbを載せて「LDAP Admin」から見ると下記のようになります. LDAPのldap/domain.ldif、LDAP/dataのldap/group.ldif、ldap/foo.ldifを登録、その後LDAP/smbのようにsmbを登録してみた. iptablesは停止
2022y11m22d_100037694.png

この状態での設定関係のフォルダは下記のようになってます

[root@centos5 ~]# ls -l /etc/openldap/
total 40
drwxr-xr-x 2 root root 4096 Sep 29  2015 cacerts
-rw-r----- 1 root ldap  921 Sep 29  2015 DB_CONFIG.example
-rw-r--r-- 1 root root  327 Nov 21 23:22 ldap.conf
drwxr-xr-x 3 root root 4096 Nov 23 01:03 schema
-rw-r----- 1 root ldap 4095 Nov 23 01:09 slapd.conf
[root@centos5 ~]#

っで、本題. 次にupgradeのために データを書き出します. LDAP/backupのホット・バックアップ形式でデータ(「main.ldif」)を書き出します

[root@centos5 ~]# slapcat -b dc=sybyl,dc=lab > main.ldif

ですが、一方で「cn=config」のデータは「slapd.d」で作っていないので何もでません. 代わりに設定ファイル「slapd.conf」をupgradeに使います

[root@centos5 ~]# slapcat -b cn=config
slapcat: could not open database.
[root@centos5 ~]#

なのでupgradeサイトには

  • main.ldif
  • slapd.conf

を持参します.

upgrade先

新規にLDAPサービスを稼働させるマシンは「RockyLinux8(ホスト名:ldap-server)」です. 「openldap-2.4.46」が使えます.

その前にデータをupgrade先にコピーします

[root@centos5 ~]# scp main.ldif root@ldap-server:main.ldif
 
[root@centos5 ~]# scp /etc/openldap/slapd.conf root@ldap-server:slapd.conf

下拵えを行います. 移植なので既存のLDAP関係のカケラを消してます.

[root@ldap-server ~]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)
 
[root@ldap-server ~]# dnf --enablerepo=powertools install openldap-servers openldap-clients samba -y
 
[root@ldap-server ~]# rm -rf /etc/openldap/slapd.d/*
[root@ldap-server ~]# rm -rf /var/lib/ldap/*
 
[root@ldap-server ~]# grep -v -e '^\s*#' -e '^\s*$' ./slapd.conf > ./slapd.conf.orig
[root@ldap-server ~]# rm -rf ./slapd.conf

持ってきた「slapd.conf」は不要な行を削除して「slapd.conf.orig」にしてます. 基本この「slapd.conf.orig」を修正して使います

まずは「/var/lib/ldap/」に置かれるmdb関係を捌きます. オリジナルから「slapd.conf」を作って修正を加えます.
「bdb」を「mdb」に変更. 末尾に「database monitor」を追加してます

[root@ldap-server ~]# cp ./slapd.conf.orig  ./slapd.conf
 
[root@ldap-server ~]# vi ./slapd.conf
 
[root@ldap-server ~]# diff -y   ./slapd.conf.orig    ./slapd.conf
include         /etc/openldap/schema/core.schema                include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema              include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema       include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema                 include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/samba.schema               include         /etc/openldap/schema/samba.schema
pidfile         /var/run/openldap/slapd.pid                     pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args                    argsfile        /var/run/openldap/slapd.args
modulepath      /usr/lib64/openldap                             modulepath      /usr/lib64/openldap
database        bdb                                           | database        mdb
suffix          "dc=sybyl,dc=lab"                               suffix          "dc=sybyl,dc=lab"
rootdn          "cn=manager,dc=sybyl,dc=lab"                    rootdn          "cn=manager,dc=sybyl,dc=lab"
rootpw          secret                                          rootpw          secret
directory       /var/lib/ldap                                   directory       /var/lib/ldap
index objectClass                       eq,pres                 index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub             index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres                 index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub             index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub             index nisMapName,nisMapEntry            eq,pres,sub
access to attrs=userPassword,shadowLastChange,sambaNTPassword   access to attrs=userPassword,shadowLastChange,sambaNTPassword
        by self write                                                   by self write
        by anonymous auth                                               by anonymous auth
        by * none                                                       by * none
access to dn.base="" by * read                                  access to dn.base="" by * read
access to *                                                     access to *
        by self write                                                   by self write
        by * read                                                       by * read
                                                              > database monitor
[root@ldap-server ~]#
[root@ldap-server ~]# cp -a /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
 
[root@ldap-server ~]# echo "" | slapadd -f ./slapd.conf
(確認)
[root@ldap-server ~]# ls -l /var/lib/ldap/
total 20
-rw-------. 1 root root 12288 Nov 22 08:24 data.mdb
-rw-r--r--. 1 root root   845 Oct 11  2021 DB_CONFIG
-rw-------. 1 root root  8192 Nov 22 08:24 lock.mdb
[root@ldap-server ~]#

以上でmdbの作成は完了. ここにコンテンツが入るのかな.

次に「slapd.d」の構築. いわゆる「cn=config」形式と言われる設定情報を収める場所を作ります
slapd.conf」の行頭に「database monitor」を置き、「bdb」を「mdb」にして、末尾に「database config」と「サーバ管理者」のパスワードを設定します. ここでは平分ですが、暗号化された文字列でもOK

[root@ldap-server ~]# cp ./slapd.conf.orig  ./slapd.conf
[root@ldap-server ~]# vi ./slapd.conf
 
[root@ldap-server ~]# diff -y   ./slapd.conf.orig    ./slapd.conf
                                                              > database        monitor
include         /etc/openldap/schema/core.schema                include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema              include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema       include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema                 include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/samba.schema               include         /etc/openldap/schema/samba.schema
pidfile         /var/run/openldap/slapd.pid                     pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args                    argsfile        /var/run/openldap/slapd.args
modulepath      /usr/lib64/openldap                             modulepath      /usr/lib64/openldap
database        bdb                                           | database        mdb
suffix          "dc=sybyl,dc=lab"                               suffix          "dc=sybyl,dc=lab"
rootdn          "cn=manager,dc=sybyl,dc=lab"                    rootdn          "cn=manager,dc=sybyl,dc=lab"
rootpw          secret                                          rootpw          secret
directory       /var/lib/ldap                                   directory       /var/lib/ldap
index objectClass                       eq,pres                 index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub             index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres                 index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub             index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub             index nisMapName,nisMapEntry            eq,pres,sub
access to attrs=userPassword,shadowLastChange,sambaNTPassword   access to attrs=userPassword,shadowLastChange,sambaNTPassword
        by self write                                                   by self write
        by anonymous auth                                               by anonymous auth
        by * none                                                       by * none
access to dn.base="" by * read                                  access to dn.base="" by * read
access to *                                                     access to *
        by self write                                                   by self write
        by * read                                                       by * read
                                                              > database        config
                                                              > rootpw  secret
[root@ldap-server ~]#
 
[root@ldap-server ~]# slaptest -f ./slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
[root@ldap-server ~]#
(確認)
[root@ldap-server ~]# ls -l /etc/openldap/slapd.d/
total 4
drwxr-x---. 3 root root  182 Nov 22 11:57 'cn=config'
-rw-------. 1 root root 1107 Nov 22 11:57 'cn=config.ldif'
[root@ldap-server ~]# ls -l /etc/openldap/slapd.d/cn\=config
total 64
drwxr-x---. 2 root root   132 Nov 22 11:57 'cn=schema'
-rw-------. 1 root root 46206 Nov 22 11:57 'cn=schema.ldif'
-rw-------. 1 root root   605 Nov 22 11:57 'olcDatabase={0}config.ldif'
-rw-------. 1 root root   596 Nov 22 11:57 'olcDatabase={-1}frontend.ldif'
-rw-------. 1 root root   536 Nov 22 11:57 'olcDatabase={1}monitor.ldif'
-rw-------. 1 root root  1436 Nov 22 11:57 'olcDatabase={2}mdb.ldif'
[root@ldap-server ~]#

これで準備が完了したので、LDAPサービスを開始します

[root@ldap-server ~]# chown -R ldap. /etc/openldap/slapd.d
[root@ldap-server ~]# chown -R ldap. /var/lib/ldap
 
[root@ldap-server ~]# systemctl start slapd
[root@ldap-server ~]# ldapsearch -x -D cn=config -w secret -b cn=config | less      <-- スキーマの確認
[root@ldap-server ~]# ldapsearch -x -LLL -w secret -D cn=config -b cn=config dn
dn: cn=config
 
dn: cn=schema,cn=config
 
dn: cn={0}core,cn=schema,cn=config
 
dn: cn={1}cosine,cn=schema,cn=config
 
dn: cn={2}inetorgperson,cn=schema,cn=config
 
dn: cn={3}nis,cn=schema,cn=config
 
dn: cn={4}samba,cn=schema,cn=config
 
dn: olcDatabase={-1}frontend,cn=config
 
dn: olcDatabase={0}config,cn=config
 
dn: olcDatabase={1}monitor,cn=config
 
dn: olcDatabase={2}mdb,cn=config
 
[root@ldap-server ~]#

最後にコンテンツ「main.ldif」を戻します.

[root@ldap-server ~]# systemctl stop slapd
[root@ldap-server ~]# cat ./main.ldif | slapadd -F /etc/openldap/slapd.d -b dc=sybyl,dc=lab
[root@ldap-server ~]# systemctl start slapd

再度「LDAP Admin」で確認します. 運営ノードが「centos5」から「ldap-server」に代わったことに注目でしょうか.
2022y11m23d_020343776.png


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-11-23 (水) 02:05:08 (5d)