LDAPサーバ slapdのインストール

# apt-get install slapd
Directory initialization method: auto
Directory suffix style: domain or host
    ※customだとslapd.confの権限のadmin用dnが空になるというバグがあります。
Enter the domain name: hoehoe.japan
Admin password, Verify password: 12345678
    ※あとで読み取り専用ユーザを作るので、
   マシンのrootと同じでもいいと思います。
Replicate to another LDAP server: No
で設定ファイル/etc/ldap/slapd.confと初期データベースが作成されます。 slapcatでデータベースの中身が確認できます。
# slapcat
dn: dc=hoehoe,dc=domain
objectClass: dcObject
dc: hoehoe

dn: cn=admin,dc=hoehoe,dc=japan
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: LDAP administrator
userPassword:: qwertyuiop=

dn: ou=People,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: People

dn: ou=Roaming,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: Roaming
現在4つのオブジェクトがあるのがわかると思います。 なお、slapcatは直接データベースファイルを覗くので、 slapdが起動していない状態でも利用できます。
なお、userPasswordの項目はバイナリフィールドとして定義されており、 slapcatではbase64化されて :: のダブルコロン項目として表示されます。 uudecode等で見ることができますが、 {CRYPT}ハッシュがかかっているので 直接パスワード12345678が書かれているわけではないです。

もし設定が気に入らない時は、 dpkg -P slapdでslapdを削除して再インストールするのが早計ですが、 次のようにしても修正できます。 たとえばパスワードを98765432に変更したい場合、 通常はldappasswdというクライアントを用いて修正しますが、 前のパスワードを忘れてしまった、などの場合には、 サーバ側のデータベースを直接修正します。

# /etc/init.d/slapd stop
# slapcat > cur.ldif
# slappasswd -h "{CRYPT}"      userPasswordに設定する文字列を得るユーティリティ
New password: 98765432
Re-enter new password: 98765432
{CRYPT}5TbEUhWdAeBS.
# vi cur.ldif
dn: dc=hoehoe,dc=domain
objectClass: dcObject
dc: hoehoe

dn: cn=admin,dc=hoehoe,dc=japan
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: LDAP administrator
userPassword: {CRYPT}5TbEUhWdAeBS.
            ↑上で得られたパスワードテキスト。: はひとつ。

dn: ou=People,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: People

dn: ou=Roaming,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: Roaming

# rm /var/lib/ldap/*.dbb
# slapadd -l cur.ldif
# slapcat
...確認...
# /etc/init.d/slapd start

ldapsearch等のインストール

実際にldapデータベースの表示や操作を行うクライアントユーティリティをインストールします。
# apt-get install ldap-utils
普通にldapsearchを起動した場合に用いられるデフォルト値を /etc/ldap/ldap.confに設定します。
# vi /etc/ldap/ldap.conf

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example, dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
HOST    127.0.0.1           接続するldapサーバ
BASE    dc=hoehoe,dc=japan  デフォルトサーチベース

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
# ldapsearch
ldap_sasl_interactive_bind_s: No such attribute
…これはldapsearchが標準でSASL接続をするためです。SASL? でも今回はローカルからldapを利用するのが 目的なのでSASLは今後の課題ということで。
# ldapsearch -x
version: 2

#
# filter: (objectclass=*)
# requesting: ALL
#

# hoehoe, japan
dn: dc=hoehoe,dc=japan
objectClass: dcObject
dc: hoehoe

# admin, hoehoe, japan
dn: cn=admin,dc=hoehoe,dc=japan
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: admin
description: LDAP administrator

# People, hoehoe, japan
dn: ou=People,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: People

# Roaming, hoehoe, japan
dn: ou=Roaming,dc=hoehoe,dc=japan
objectClass: organizationalUnit
ou: Roaming

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 4
ldapsearchそのままで起動した場合はanonymousとして認証されるので 権限のないフィールド(userPassword)などを表示させることはできません。 ldapsearchは通常のLDAPクライアントなので、slapcatと違い一般ユーザでも実行できます。

ldapを操作できるldapクライアントとしてはGUIなものなど色々ありますので、 apt-cache search ldap で検索してみましょう。