LPIC level3 Core(英語試験)へ向けて、OpenLDAPサーバを用意してみる。
とりあえず、OpenLDAPをインストールして起動するところまで。
OSは、CentOS5.4。
RPMパッケージを使って、サクっとインストールしてもよかったが、それでは簡単すぎる。
ソースコードからのインストールを実施してみた。
以下、実際に行った手順。
ソースコード格納用のディレクトリを作成
$ cd /home/kakuya/ldap/src/
ソースコードアーカイブファイルをダウンロード。
今回、OpenLDAPは、2.4.22を使用する。
アーカイブファイルを展開
Configureスクリプトを実行し、Makefile生成
なんかエラーが出てきた。
$ ./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でサクっとインストール。
パスワード:
# 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 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ファイルを確認すると、以下の記述が…。
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のバージョンを確認。
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をソースコードからインストールする。
ソースコードアーカイブファイルをオラクルのダウンロードサイトから入手。
以下の手順で、インストール。
$ cd db-4.8.30/build_unix/
$ ../dist/configure →エラーなくMakefile生成完了
$ make →エラーなくコンパイル完了
$ su root -c ‘make install’
パスワード:
→エラーなくインストール完了
現時点では、Derkeley DBがインストールされた/usr/local/BerleleyDB.4.8/libは、ライブラリの検索パスに含まれていない。
そのため、共有ライブラリのパスを追加し、キャッシュに反映させる。
# 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に伴ってインストールされた
ヘッダファイルとライブラリファイルのディレクトリを指定する。
$ 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 → エラーなくコンパイル完了
$ 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設定ファイルの配置場所を確認
合計 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を利用する構成になっていることを確認。
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の起動・停止を確認していく。
# 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が同梱されている。
# cp -p DB_CONFIG.example DB_CONFIG
# /usr/local/sbin/slaptest -u
config file testing succeeded
OpenLdapを起動する
# /usr/local/libexec/slapd
# ps xa | grep -v grep | grep slap
20373 ? Ssl 0:00 /usr/local/libexec/slapd
停止する
とりあえず、ここまで。