OpenLDAP (Open source LDAP server)

[ 戻る | トップページに戻る ]

概要

OpenLDAP とは、LDAP (Lightweight Directory Access Protocol) のフリー実装。

URL

http://www.OpenLDAP.org/

インストール環境

Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)

必要なもの

libtool, iODBC, SASL (Option), BerkeleyDB (4.1.x 以上?)

バージョン

2.0.17, 2.0.18, 2.1.17

インストール手順 (for 〜2.0.18)

$ tar xvfz openldap-2.0.17.tgz 
$ cd openldap-2.0.17
$ ./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
(snip)
checking for cc option to accept ANSI C... none needed
checking for cc depend flag... -M
checking for afopen in -ls... no
checking for ltdl.h... no
configure: error: could not locate libtool ltdl.h

libtool? ltdl.h? これって何? (^^;
libtool をインストール後、再トライ。
$ ./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
(snip)
checking for openssl/ssl.h... no
checking for ssl.h... no
configure: warning: Could not locate TLS/SSL package
configure: warning: TLS privacy protection not supported!
(snip)
checking for main in -lnsl... yes
checking for openlog... yes
checking for SQLDriverConnect in -liodbc... no
checking for SQLDriverConnect in -lodbc... no
configure: error: could not locate suitable ODBC library

むむ。今度は ODBC ライブラリが必要ってか。 iODBC をインストール後、再トライ。
$ ./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
(snip)
checking for openssl/ssl.h... no
checking for ssl.h... no
configure: warning: Could not locate TLS/SSL package
configure: warning: TLS privacy protection not supported!
(snip)
checking for sasl.h... no
configure: warning: Could not locate Cyrus SASL
configure: warning: SASL authentication not supported!
configure: warning: Strong authentication not supported!

これで、とりあえず configure は通るようになったが、 上記 2 点、なんとかしたいなぁ。

SASL は当該ライブラリをインストールすれば解決。
OpenSSL が見つからない件は、Samba 等と同じくヘッダファイルが /usr/local/ssl/include/openssl に入っているためだな、きっと。こうだっ。
$ su
# cd /usr/local/include
# ln -s /usr/local/ssl/include/openssl openssl
# exit
$ ./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
(snip)
checking for openssl/ssl.h... yes
checking for ssl.h... no
checking for SSLeay_add_ssl_algorithms in -lssl... no
checking for SSL_library_init in -lssl... no
checking for ssl3_accept in -lssl... no
configure: warning: Could not locate TLS/SSL package
configure: warning: TLS privacy protection not supported!

ssh.h は OK 。後は libssl.* か。物は /usr/local/ssl/lib にあるのだが...
# cd /usr/local/lib
# ln -s /usr/local/ssl/lib/libssl.a libssl.a

もダメ。
# cd /usr/lib
# ln -s /usr/local/ssl/lib/libssl.a libssl.a

もダメ。わーかーらーん。 configure スクリプトの中身を追うのもおっくうなので (^^; とりあえず無視する。
$ make depend
$ make
$ make test
cd tests; make test
make[1]: 入ります ディレクトリ `/usr/local/src/openldap-2.0.17/tests'
ln: ./data: cannot overwrite directory
make[1]: [test-ldbm] エラー 1 (無視されました)
ln: ./schema: File exists
make[1]: [test-ldbm] エラー 1 (無視されました)
Initiating LDAP tests for LDBM...
>>>>> Executing all LDAP tests...
>>>>> Test Directory: .
>>>>> Backend: ldbm
>>>>> Starting test000-rootdse ...
running defines.sh . ldbm
Datadir is ./data
Cleaning up in ./test-db...
Starting slapd on TCP/IP port 9009...
Using ldapsearch to retrieve all the entries...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
ldap_bind: Can't contact LDAP server
>>>>> Test failed
>>>>> ./scripts/test000-rootdse failed (exit 1)
make[1]: *** [test-ldbm] エラー 1
make[1]: 出ます ディレクトリ `/usr/local/src/openldap-2.0.17/tests'
make: *** [test] エラー 2

うーん。INSTALL を読むと make test は SLAPD と LDBM が有効な場合のみ、 書いてある。configure --help を見ると、 --enable-slapd [yes], --enable-ldbm [yes] とあるのだが、この [yes] って どういう意味〜。デフォルトなのか? configure 時に認識されたのか? わーかーらーん。
いい。次へ進む。
$ su
# make install
# exit

slapd.conf を設定し、slapd を起動。いざ、検索してみようとすると...。
# もちろん、ルートエントリなどの初期データは投入済み。
$ /usr/local/bin/ldapsearch -x -b 'o=sample,c=JP' '(objectClass=*)'
ldap_bind: Can't contact LDAP server

動かない〜。make test でエラーになったのと同じ原因のよう。むう。 試しに何も configure オプションをつけずにコンパイルしてみると...。
$ make distclean
$ ./configure
$ make depend
$ make
$ make test
$ su
# make install
# exit

これだとちゃんと make test が通る。ふむ。 ここでふと気付いた。--enable-wrappers を指定してるじゃん、をれ。(^^;
という訳で、/etc/hosts.allow に以下のようなエントリを追加すれば、無事解決〜。
slapd :       xxx.xxx.xxx. 127.0.0.1

設定方法

/usr/local/etc/openldap/slapd.conf を以下のように修正。
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema         <-- 追加
include         /usr/local/etc/openldap/schema/inetorgperson.schema  <-- 追加
(snip)
#suffix         "o=My Organization Name,c=US"
suffix          "o=HOGEHOGE KK,c=JP"
                   ~~~~~~~~~~~   ~~ 修正
#rootdn         "cn=Manager,o=My Organization Name,c=US"
rootdn          "cn=Manager,o=HOGEHOGE KK,c=JP"
                    ~~~~~~~   ~~~~~~~~~~~   ~~
(snip)
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXX
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 修正
(snip)
# Indices to maintain
index   objectClass     eq
index   cn,sn,givenName,uid,mail        pres,eq,sub       <--- 追加
(snip)
access to attr=userPassword                               <--- 追加
        by self write                                     <--- 追加
        by anonymous auth                                 <--- 追加
        by dn="cn=Manager,o=HOGEHOGE KK,c=JP" write       <--- 追加
        by * none                                         <--- 追加

access to *                                               <--- 追加
        by dn="cn=SO,o=TOYOTA DIGITAL CRUISE,c=JP" write  <--- 追加
        by * read                                         <--- 追加

なお、ここで rootpw は以下のようにして生成したものを用いる。
$ /usr/local/sbin/slappasswd -s <暗号化したいパスワード文字列>
{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXX

後は、/usr/local/libexec/slapd を起動しておしまい。

インストール手順 (for 2.1.17)

$ tar xvfz openldap-2.1.17.tgz 
$ cd openldap-2.1.17
./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
(snip)
checking for openssl/ssl.h... no
checking for ssl.h... no
configure: warning: Could not locate TLS/SSL package
configure: warning: TLS data protection not supported!
(snip)
checking for Berkeley DB thread support... yes
checking Berkeley DB version for BDB backend... no
configure: error: BDB: BerkeleyDB version incompatible

相変わらず SSL/TSL はうまく認識しないので放っておくとして... (^^;
Berkeley DB version incompatible ってどういうこと〜??
README をよく読むと Berkeley DB 4.1 以上が必要らしい。 インストールされているのは 3.2.9 (/usr/include/db.h 参照) 。そりゃダメだわな。 Berkeley DB 4.1.25 をインストールしてから、再トライ。
...が、ダメ。むう。インストール済みの db を認識しちゃってる。 じゃあ、これでどうだ (Berkeley DB のインストール先は /usr/local/BerkeleyDB.4.1) 。
$ CPPFLAGS=-I/usr/local/BerkeleyDB.4.1/include LDFLAGS=-L/usr/local/BerkeleyDB.4.1/lib \
           ./configure --enable-wrappers --enable-modules --enable-ldap --enable-sql
$ make depend
$ make
$ make test
(snip)
Filtering expected LDIF for comparison...
Comparing filter output...
>>>>> Test succeeded
>>>>> ./scripts/test016-subref completed OK.
>>>>> waiting 10 seconds for things to exit

ln: ./data: cannot overwrite directory
make[1]: [test-ldbm] エラー 1 (無視されました)
ln: ./schema: File exists
make[1]: [test-ldbm] エラー 1 (無視されました)
run configure with --enable-ldbm
make[1]: 出ます ディレクトリ `/usr/local/src/openldap-2.1.17/tests'

うーむ。--enable-ldbm をつけて configure しろ?? うーん、dbm 絡みのテストに失敗しているだけ? 使わないから無視していい? テストはこれで終り? ちょい調べると./test/README に記述みっけ。すべてのテストを実行する場合は make test 。BDB の場合は make bdb 。LDBM の場合は make ldbm らしい。 っー事でやりなおし。
$ make bdb
make: *** ターゲット `bdb' を make するルールがありません.  中止。

むむむ。こうかな?
$ cd tests
$ make bdb

今度は無事終了。あとはインストールしておしまい。
$ su
# make install
# exit

[ 戻る | トップページに戻る ]