No. 1 動かして、認証しないと検索できない状態まで。
CentOS 4.6をインストール。
パッケージはとりあえず何も考えずにすべて。まずは動かす。
バージョンは以下のコマンドで確認。
$ cat /etc/redhat-release CentOS release 4.6 (Final)
管理者パスワードを決めておく。平文でもできるが、slappasswdコマンドで暗号化パスワードを生成する。
# slappasswd New password: Re-enter new password: {SSHA}8TGANxgv6n2hjkNaHmG/9XE0Ns3rlvWe
/etc/openldap/slapd.confを編集。
suffixはベースとなるDNで、LDAPはここを元に木構造となっている。rootdnは、管理用のアクセス権のDN。Linuxのrootユーザみたいなものと考えればきっとそんなに違わない。あとは、rootpwでこれはrootdnのパスワードとなる。
suffixはとりあえず、kuwalab.netとでもしておく。
パスワードは、slappasswdで生成したもの。ちなみに、平文はtest。
suffix "dc=kuwalab,dc=net" rootdn "cn=Manager,dc=kuwalab,dc=net" rootpw {SSHA}8TGANxgv6n2hjkNaHmG/9XE0Ns3rlvWe
rootpwは、暗号化せずに、
rootpw test
とも書けるが、普通は暗号化する。手間もかからないし。
最低限必要なのはこれくらい。動かしてみる。
# /etc/init.d/ldap start slapd の設定ファイルをチェック中: [ OK ] slapd を起動中: [ OK ]
動いた!
まずは、LDIFファイルを作成して、エントリを登録する。
必要最低限のエントリだけ記述して、test.ldifという名前で保存する。
dn: dc=kuwalab,dc=net objectClass: dcObject objectClass: organization o: kuwalab dc: kuwalab dn: cn=Manager,dc=kuwalab,dc=net objectClass: organizationalRole cn: Manager
そのエントリを登録する。
# ldapadd -x -D "cn=Manager,dc=kuwalab,dc=net" -W -f test.ldif Enter LDAP Password: adding new entry "dc=kuwalab,dc=net" adding new entry "cn=Manager,dc=kuwalab,dc=net"
できた感じ。
おもしろくもないけど、本当に登録されているか検索してみる。
# ldapsearch -x -LLL -b "dc=kuwalab,dc=net" "(objectClass=*)" dn: dc=kuwalab,dc=net objectClass: dcObject objectClass: organization o: kuwalab dc: kuwalab dn: cn=Manager,dc=kuwalab,dc=net objectClass: organizationalRole cn: Manager
うーん。匿名接続で、検索できてしまうのは面白くないので、制限できるか試してみる。
データアクセスも、slapd.confで確認する感じ。
まずは、slapd.confに以下の行を追加。
access to * by anonymous none
*へのアクセス(すべてのアクセス)は、anonymous(匿名ユーザ)はnone(不可)とした。とりあえず、認証はしないと何もさせないよという設定。
ldapを再起動して、再度検索。
# ldapsearch -x -LLL -b "dc=kuwalab,dc=net" "(objectClass=*)" #
っ!エラーも出ずにプロンプトが返ってくるよ。動きは正しいんだろうね?
それは放っておいて、認証したらとれるか試してみる。
# ldapsearch -x -LLL -D "cn=Manager,dc=kuwalab,dc=net" -W -b "dc=kuwalab,dc=net" "(objectClass=*)" Enter LDAP Password: dn: dc=kuwalab,dc=net objectClass: dcObject objectClass: organization o: kuwalab dc: kuwalab dn: cn=Manager,dc=kuwalab,dc=net objectClass: organizationalRole cn: Manager
OK。
次があれば、普通のユーザーを追加して、自分の情報だけ参照できるかをやってみる。