【LPIC】OpenLDAPサーバの構築手順

スポンサーリンク

LPIC level3 Core(英語試験)へ向けて、OpenLDAPサーバを用意してみる。
とりあえず、OpenLDAPをインストールして起動するところまで。

OSは、CentOS5.4。
RPMパッケージを使って、サクっとインストールしてもよかったが、それでは簡単すぎる。
ソースコードからのインストールを実施してみた。

以下、実際に行った手順。

ソースコード格納用のディレクトリを作成

$ mkdir -p /home/kakuya/ldap/src
$ cd /home/kakuya/ldap/src/

ソースコードアーカイブファイルをダウンロード。
今回、OpenLDAPは、2.4.22を使用する。

$ wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.22.tgz

アーカイブファイルを展開

$ tar xzvf openldap-2.4.22.tgz

Configureスクリプトを実行し、Makefile生成
なんかエラーが出てきた。

$ cd openldap-2.4.22
$ ./configure
Configuring OpenLDAP 2.4.22-Release …
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking target system type… i686-pc-linux-gnu
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking configure arguments… done
checking for cc… no
checking for gcc… no
configure: error: Unable to locate cc(1) or suitable replacement.  Check PATH or set CC.

gccが入っていない。yumでサクっとインストール。

$ su –
パスワード:
# yum install -y gcc
# rpm -qa | grep gcc
gcc-4.1.2-48.el5
libgcc-4.1.2-48.el5

で、もう一度configureスクリプトを実行。
さっきと違うエラーが出てきた。

checking number of arguments of ctime_r… 2
checking number of arguments of gethostbyname_r… 6
checking number of arguments of gethostbyaddr_r… 8
checking db.h usability… yes
checking db.h presence… yes
checking for db.h… yes
checking for Berkeley DB major version in db.h… 4
checking for Berkeley DB minor version in db.h… 3
checking if Berkeley DB version supported by BDB/HDB backends… no
configure: error: BerkeleyDB version incompatible with BDB/HDB backends
$

BerkeleyDBバージョンの互換性が無いとか…。
OpenLDAPのアーカイブに収録されているREADMEファイルを確認すると、以下の記述が…。

SLAPD:
   BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5,
   4.6, 4.7, or 4.8.  It is highly recommended to apply the
   patches from Oracle for a given release.

で、現在インストールされているDerkeley DBのバージョンを確認。

$ rpm -qa | grep db4
db4-4.3.29-10.el5
db4-devel-4.3.29-10.el5
$

バージョンは4.3っぽい。なので、Derkeley DBのバージョンチェックに失敗したようだ。
yumコマンドでインストールできる最新バージョンも、4.3までの感じ…。
なので、OpenLDAP が対応しているバージョンのうち、最も新しいDerKeley DB 4.8をソースコードからインストールする。
ソースコードアーカイブファイルをオラクルのダウンロードサイトから入手。
以下の手順で、インストール。

$ tar zxvf db-4.8.30.tar.gz
$ cd db-4.8.30/build_unix/
$ ../dist/configure  →エラーなくMakefile生成完了
$ make    →エラーなくコンパイル完了
$ su root -c ‘make install’
パスワード:
    →エラーなくインストール完了

現時点では、Derkeley DBがインストールされた/usr/local/BerleleyDB.4.8/libは、ライブラリの検索パスに含まれていない。
そのため、共有ライブラリのパスを追加し、キャッシュに反映させる。

# echo /usr/local/BerkeleyDB.4.8/lib >> /etc/ld.so.conf
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/BerkeleyDB.4.8/lib
# ldconfig    →/etc/ld.so.cacheを再構築

以上で、Berkeley DB 4.8を使ったOpenLDAPのコンパイルが可能となるはず。
もっかいOpenLDAPのconfigureスクリプトを実行してみる。

この際に、CPPFLAGS変数とLDFLAGS変数に Berleley DB 4.8に伴ってインストールされた
ヘッダファイルとライブラリファイルのディレクトリを指定する。

$ cd /home/kakuya/ldap/src/openldap-2.4.22
$ CPPFLAGS=-I/usr/local/BerkeleyDB.4.8/include LDFLAGS=-L/usr/local/BerkeleyDB.4.8/lib ./configure
    →エラーなく完了。Please run “make depend” to build dependenciesが表示された。

依存関係の確認、コンパイル、テスト、インストールを行っていく。

$ make depend
$ make    → エラーなくコンパイル完了
$ make test    → エラーが2つほど出てきた?
No race errors found after 10 iterations
Found 2 errors
>>>>>> Exiting with a false success status for now
>>>>> ./scripts/test058-syncrepl-asymmetric completed OK for hdb.
$ su root -c ‘make install’    → エラーなく完了

slapdデーモンとslapd.conf設定ファイルの配置場所を確認

$ ls -l /usr/local/libexec/
合計 1552
-rwxr-xr-x 1 root root 1581540  6月  5 10:38 slapd

$ ls -l /usr/local/etc/openldap/
合計 24
-rw——- 1 root root  921  6月  5 10:38 DB_CONFIG.example
-rw-r–r– 1 root root  245  6月  5 10:38 ldap.conf
-rw-r–r– 1 root root  245  6月  5 10:38 ldap.conf.default
drwxrwxr-x 2 root root 4096  6月  5 10:38 schema
-rw——- 1 root root 2129  6月  5 10:38 slapd.conf
-rw——- 1 root root 2129  6月  5 10:38 slapd.conf.default

slapdデーモンが先にインストールされたBerkeley DBを利用する構成になっていることを確認。

$ ldd /usr/local/libexec/slapd
        linux-gate.so.1 =>  (0x00674000)
        libuuid.so.1 => /lib/libuuid.so.1 (0x02d4c000)
        libdb-4.8.so => /usr/local/BerkeleyDB.4.8/lib/libdb-4.8.so (0x00110000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00a75000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x04b5c000)
        libssl.so.6 => /lib/libssl.so.6 (0x0489c000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x04759000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x007ee000)
        libc.so.6 => /lib/libc.so.6 (0x008ff000)
        /lib/ld-linux.so.2 (0x008dc000)
        libdl.so.2 => /lib/libdl.so.2 (0x00a6f000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x02f55000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x02683000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x025eb000
)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x006b0000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x0085c000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00a99000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x008c4000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x007e9000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x0067d000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00272000)

OpenLDAP関連のアクセス権がrootでは、なんかアレなので
アクセス権をldapに変更する。その上で、OpenLDAPの起動・停止を確認していく。

# groupadd ldap
# useradd -g ldap -s /bin/false ldap
※/bin/falseを指定することで、ログイン不可のユーザアカウントとなる

# chown root:ldap /usr/local/etc/openldap/slap.conf
# chmod 640 /usr/local/etc/openldap/slap.conf
# ls -l /usr/local/etc/openldap/slapd.conf
-rw-r—– 1 root ldap 2129  6月  5 10:38 /usr/local/etc/openldap/slapd.conf

# chown ldap:ldap /usr/local/var/openldap-data

DB_CONFIGファイルを用意して、slaptestコマンドで設定ファイルの内容をチェック。
※DB_CONFIGファイルがない場合には、OpenLDAPのアーカイブファイルにDB_CONFIG.exampleが同梱されている。

# cd /usr/local/etc/openldap/
# cp -p DB_CONFIG.example DB_CONFIG
# /usr/local/sbin/slaptest -u
config file testing succeeded

OpenLdapを起動する

# ps xa | grep -v grep | grep sldapd →何も表示されず
# /usr/local/libexec/slapd
# ps xa | grep -v grep | grep slap
20373 ?        Ssl    0:00 /usr/local/libexec/slapd

停止する

# kill -kill 20373

とりあえず、ここまで。

スポンサーリンク

 

SNSシェアボタン

  • このエントリーをはてなブックマークに追加