OpenLDAPは、最近のLinuxなどではパッケージでも提供されていますし、ここでは、ソースからのインストールと実行方法を示します。
|
| OpenLDAPのインストール(Source) |
OpenLDAPをインストールする場合は、いくつか注意点があります。
A.bdb(BerkeleyDB)のバージョンに注意してください。
今回は、OpenLDAPは2.1系を利用しましたが、dbdのバージョンにより、利用できるOpenLDAPが決まります。
OpenLDAP-2.1系=bdb-4.1系 、 OpenLDAP-2.0系=bdb-4.0系ですので、自信の環境に合わせたOpenLDAPを利用してください。
FreeBSDでPortsからインストールする場合も注意してください。
B.OpenLDAPとの通信をOpenSSLを利用し暗号化できます。この場合は、先にOpenSSLをインストールしてください。
C.OpenLDAPとCyrus-SASLの関係
OpenLDAPへの接続認証に、Cyrus-SASLを利用することができます。また、OpenLDAPの利用方法として、Cyrus-SASLの認証用DBにOpenLDAPを利用することもできます。
これは少々わかりにくいですが、OpenLDAPがCyrus-SASLに依存する場合と、Cyrus-SASLがOpenLDAPに依存する場合が出て来ることになります。
どういうことかと言うと、
*OpenLDAPがCyrus-SASLに依存 = OpenLDAPへ接続する場合、Cyrus-SASLを使って認証します。この場合のユーザデータは、
Cyrus-SASLのバックエンドDB(saslDB)にデータを保存します。
*Cyrus-SASLがOpenLDAPに依存 = Cyrus-SASLは、認証実行時に自信のDB(saslDB)では無く、OpenLDAPにデータの問い合わせをします。
1.LDAP用ユーザとグループの作成
システムにログインできる必要はありません。(各OSの流儀にそってください。)
ここでは、RedHatの例を示します。
#groupadd ldap
#useradd -g ldap -d /dev/null -s /bin/false ldap
2.OpenLDAPのインストール
OpenLDAPはhttp://www.openldap.org/から入手してください。
#tar zxvf openldap-2.1.26.tar.gz -C /usr/local/src
#cd /usr/local/src/openldap-2.1.26
#./configure --prefix=/usr/local --enable-ldbm
Pleas "make depend"と表示されたら、make dependを行ない、makeします。
#make depend
#make
#make test
#make install
3.起動用の設定と動作確認
最低限、起動できる様に初期設定をします。
/usr/local/etc/openldap/slapd.conf
|
include /usr/local/etc/openldap/schema/core.schema
database bdb
suffix "o=exmaples,c=JP"
rootdn "cn=Manager,o=examples,c=JP"
rootpw manager
directory /usr/local/var/openldap-data
index objectClass eq
|
|
|
続いて、slapd.confやldapで利用するディレクトリのパーミッションを変更します。
#chown ldap:ldap slapd.conf
#chmod 600 slapd.conf
#chown -R ldap:ldap /usr/local/var
#chmod -R 700 /usr/local/var
起動します。
/usr/local/libexec/slapd -u ldap -g ldap
起動の確認
/usr/local/bin/ldapsearch -x -b '' -s base +
ずらずらずら、とメッセージがでれば取りあえず起動は成功
ldap_bind: Can't contact LDAP serverって出たら、残念、起動に失敗してます。
/usr/local/libexec/slapd -u ldap -g ldap -d 127で、デバッグオプション付けて起動し確認してください。
停止は、
kill -INT `cat /usr/local/var/slapd.pid`
4.自動起動用スクリプトの例
|
ついでに、スクリプトファイルの例です。
#!/bin/sh
PROFILEDIR=/usr/local/var
case "$1" in
start)
if [ $PROFILEDIR/slapd.pid ] ; then
echo "Running slapd"
else
/usr/local/libexec/slapd -u ldap -g ldap
echo "Stating slapd"
fi
;;
stop)
if [ -f $PROFILEDIR/slapd.pid ] ; then
kill `cat $PROFILEDIR/slapd.pid`
echo "Stopping slapd"
else
echo "Not Running slapd""
fi
;;
restart)
if [ -f $PROFILEDIR/slapd.pid ] ; then
kill `cat $PROFILEDIR/slapd.pid`
echo "Stopping slapd"
/usr/local/libexec/slapd -u ldap -g ldap
echo "Stating slapd"
else
/usr/local/libexec/slapd -u ldap -g ldap
echo "Stating slapd"
fi
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" 1>&2
exit 1
;;
esac
exit 0
|
|