Up
Down
Return

openLDAP のインストールとLDAP Explorerによる検索・保守

家庭内といえどもコンピュータの数が増えると色々なデータは一カ所に集約して共用したくなりますが、電子メールのアドレス帳はその代表的なものです。
LDAP(Lightweight Directory Access Protocol)はディレクトリ検索のプロトコルです。説明としてはとりあえずLDAP とは ?を参照するとよいでしょう。LinuxでのopenLDAPについてはLinux JF (Japanese FAQ) Project.にあるLDAP Linux HOWTOが参考になります。
openLDAPはミシガン大学で開発されたLDAPから派生しThe OpenLDAP Foundationが引き継いだフリーなLDAP サーバです。我が家でのインストールはDebian GNU/Linux2.2に含まれているopenLDAPを用いました。自宅用ですからローカルサービスのみのスタンドアロンとして導入しました。

openLDAPのインストール

インストールはopenLDAPのパッケージを選択するだけで特に問題なく行われます。
/etc/openldapに作られる slapd.conf を自サイトにあわせて編集します。
必要なSchema をinclude します。slapd.at.confとslapd.oc.confは必要でしょう。 Netscape RoamingとDebian Package Directory entriesは必要と思ったら入れといたらいいんじゃないですか?ってとこでしょう。
rootdn "cn=xxxxx, o=yyyy, c=jp"を設定します。これはまじめに考えるとしっかりしたポリシーを確立して決めるべき事項です。たとえば、自分のドメイン名とどこまで合わせるか、全く別物と割り切るか、といった事で迷わされました。
access to attribute=userPassword
by dn="cn=xxxxx, o=yyyy, c=jp" read
by self write
by * none
# The admin dn has full write access
access to * by dn="cn=xxxxx, c=yyyy, c=jp" write
のアクセス権に関する部分もdnなどを変更します。
ldap.confも自サイトに合うように修正します。
#BASE dc=OpenLDAP, dc=Org
#HOST ldap.openldap.org
#PORT 389
myldifというファイルがあるので、ここに初期登録する名簿をエディタで記入します。ここにどのような項目を記述すべきはある程度objectclassによって決められています。 slapd.oc.confにobjectclassが既に登録されているのでこれを参照しました。objectclassは名前から想像できるようにスーパークラスとなるもので、これの利用方法は結構奥が深そうです。
/usr/sbin/ldif2ldbmを使って、ldif2ldbm -f slapd.conf -i myldif
でldbmというデータベースを使ったディレクトリを作成します。データベースはldbm以外にも使えるようですがopenLDAPはldbmがデフォルトでマニュアルやツールもそれが前提です。
ldapsearch -h 127.0.0.1 -b 'o=yyyy, c=jp' 'objectclass=*'
で初期登録した内容を確認します。


これで導入作業は終わりです。
内容を追加する時や変更する時はmyldifを編集して、ldapaddやldapmodifyで追加・修正を行います。削除はldapdeleteですね。
しかし、telnet等で接続してこれらをやるのは面倒なので、もっとお気楽なメンテナンス・ツールはないのかな?と見渡すと、幾つかのHTTPベースのツールが見つかりました。ただ、Debian GNU/Linux2.2は決して最新では(たとえばlibc6)ないため、依存性の関係で使えないものが多く、結局LDAPExplorerというPHPを使ったツールを使うことにしました。従って以下はPHP3(かPHP4)が既にインストールされWebサーバApacheから使用可能となっていることが前提となります。


LDAP Explorerのインストール

LDAPExplorer-1.15.tar.gzをダウンロードし、Webサーバ(Apache)のドキュメントルートに入れて展開します。LDAPExplorerというディレクトリが出来てその下に種々のサブディレクトリとファイルが置かれます。
ドキュメントルートに/tmpディレクトリを作ります。httpd.confのUser:GroupがtmpのUser:Groupとなるようにchownします。
ドキュメントルート下の/LDAPExplorer/default.phpを編集します。
直すのは以下のような項目です。$default->host[0] = "自分のドメイン名";
$default->basedn[0] = "o=yyyy,c=jp";
$default->binddn[0] = "cn=xxxxx,, o=yyyy, c=jp";
$default->root_html = "ドキュメントルートのフルパス";
Apacheのhttpd.confで
LoadModule php3_module /usr/lib/apache/1.3/libphp3.so
が有効になっていること。
同じくsrm.confで
AddType application/x-httpd-php3 .php
が無ければ追加しておきます。
php3-ldapというパッケージがインストールされていないならインストールします。
/usr/lib/php3/apache/ldap.s
/usr/lib/php3/cgi/ldap.so
が存在することを確認しましょう。
/etc/php3/apache/php3.ini か /etc/php3/cgi/php3.iniを編集して
extension=ldap.so
を追加します。これは、pg_connectなどPHPでPostgreSQLを使う時のトラブルと同じ現象の回避策です。これをやっておかないと、ldap_connect()が出来ないとか言われます。
ブラウザからhttp:/WebサーバのURL/LDAPExplorer/login.phpをURLに入れて表示してみます。
LDAPExplorer Bind
うまく表示されればOKですが.............
LDAP server 、Base DN 、Bind DN As などを選んで、EXPLORERボタンを押すと
LDAPExplorer
となります。ここでうまく行かないときは、slapd.confでopenLDAPのアクセスコントロールを確認します。まず rootdn がブラウザのBind DN As と合っているかをチェックしましょう。
後は使ってみるだけ。

LDAPの活用

こうしてディレクトリを作り、登録もできましたので、今度はそれを使う方を考えましょう。
LDAPのクライアントとして使えるのは、Netscape Communicator 4.7 などのアドレス帳、Microsoft Outlook98以降 などです。NetscapeはLinuxを含め各種OS上でほぼ同じ操作環境を提供してくれるのが有り難い訳で、まずこれを設定します。
アドレス帳を開き「ファイル」-「新しいディレクトリ」を選択して「ディレクトリサーバのプロパティ」ウィンドウを開き、各項目をセットします。「LDAPサーバ」には、上でopenLDAPをインストールしたマシンのドメイン名を入れます。「検索開始場所」には、Base dnとして指定した o=yyyy, c=jpを入れるのがよいでしょう。ポートは普通389なのでしょうがldap.confなどで設定したポートを指定します。
Address Book Properties
「表示する名前」に*を入れるとBase dnに該当する全件が表示されます。
Netscape Address Book
次にMac用のOutlook5で使ってみます。Outlookを起動したら「ツール」-「アカウント」を選択し「アカウント」ウィンドウを開きます。「ディレクトリサービス」タブを押し、「新規」をクリックします。「インターネットディレクトリ(LDAP)サーバー」にはopenLDAPが動いているマシンのドメイン名を入れます。「アカウント名」にはそのマシン名とかを適当に入れます。
Outlook 1
これでディレクトリサービスの一覧に自分のLDAPサーバも表示されます。ここで、このアカウント名をクリックし「標準設定」を押しておきましょう。これで名前などでサーバを検索もできますし、
Outlook 2
新規のメールを作成する際に、名前を入れてメールアドレスを宛先へ入れることもできます。
Outlook 4