OpenLDAPの導入
MacはすでにOpenLDAPを含んでいますのでさらに導入するのは必要がありませんが、もうし導入したい場合は先立ってbrewを導入して以下のようにOpenLDAP導入する
- Brewの導入:http://brew.sh/
- brew install homebrew/dupes/openldap --with-berkeley-db4
OpenLDAPの設定手順
ldap.conf( /etc/openldap/ldap.conf ) :
LDAPのBASEとURIを定義するところです
#
# 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
BASE dc=localhost
URI ldap://localhost
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
TLS_REQCERT demand
slapd.conf ( /etc/openldap/slapd.conf )
まずは必要なスキーマを含めるようにする
include /private/etc/openldap/schema/core.schema
include /private/etc/openldap/schema/cosine.schema
include /private/etc/openldap/schema/nis.schema
include /private/etc/openldap/schema/inetorgperson.schema
bdpデータベースに応じてのモジュールをコメントアウトする
modulepath /usr/libexec/openldap
moduleload back_bdb.la
BDPデータベースに関する設定は以下になります
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=localhost"
rootdn "cn=Manager,dc=localhost"
rootpw {SSHA}w2PML4P/bcKEiW1YfF8Y0PiJHaCnGAY9
- rootdnは後ほどよく使われるので覚えておいてください。
- rootpwは別のターミナルでslappasswdで生成されます。
- 新パスワードは仮で「admin」にしておく。
LDAPサーバーのデータの保存する場所はdirectoryで指定されます。
directory /private/var/db/openldap/openldap-data
以上で書いてあるフォルダーへ移動してDBの必要なファイルをdefaultからcopyする
$cp DB_CONFIG.default DB_CONFIG
LDAP操作
設定ファイル句法は正しいかどうかの確認
$sudo slaptest
[bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
config file testing succeeded]がでてくるかもしれませんが無視してもいいです
サーバー起動
% sudo /usr/libexec/slapd -d3
無事に起動できればdn2id.bdbやid2entry.bdbが自動的に生成されましてサビスは上に指定していたURIで動いているはずです。psコマンドで確認できます
#ps -ef | grep slapd
検索
slapdを初めて起動したときの確認
$ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
登録
構成定義ファイルの拡張子はLDIFです。下の例ではorganization.ldif とする
dn:cn=company,dc=localhost
objectclass:dcObject
objectClass:organization
dc:localhost
o:My_Company
description:Company
ldapaddで登録する
$ldapadd -x -w admin -f organization.ldif -D "cn=Manager,dc=localhost"
要注意:
- 「admin」は上に述べたrootpwである。
- 「cn=Manager,dc=localhost」は設定ファイルで定義した「rootdn」である。
削除
ldapdelete -x -w admin -D "cn=Manager,dc=localhost" "cn=company,dc=localhost"
- 一番目のパラムはrootdnで2番目のパラムは削除したいアイテムです
- rootpwは最後に入られます
objectClassについて
No | オブジェクトクラス名 | 必須属性名 | 意味 | 備考 |
---|---|---|---|---|
1 | dcObject | dc | domain component | - |
2 | person | sn | 姓 | |
3 | person | cn | 人の名前 (common name) |
よく遭遇するトラブル
No | 区分 | メッセージ | 対処 |
---|---|---|---|
1 | ldapsearch/add/delete | Can't contact LDAP server (-1) | 環境変数LDAPCONFで指定されたldap.confのHOST設定は正しくない恐れがある |
2 | ldapsearch/add/delete | SASL(-1): generic failure: GSSAPI Error: Miscellaneous failure (No credentials cache found) | -xオプションを付ければ解決 |
3 | ldapsearch/add/delete | ldap_delete: Strong(er) authentication required (8) additional info: modifications require authentication | -xに加えて、-w secretも付けてみよう。secreteはrootpwの値です |
4 | ldapsearch/add/delete | ldap_delete: Server is unwilling to perform (53) additional info: no global superior knowledge | 削除指定したDN名が不明確でrootDNは正しく指定されていない |
5 | ldapsearch/add/delete | ldap_bind: Invalid credentials (49) | -D [rootdn]をつけてみましょう。 |
6 | slapcat | slap_startup failed | OSを再起動したら治られるかも |
7 | ldapadd | additional info: objectClass: value #0 invalid per syntax | 必要なschemaファイルがslapd.confでincludeされていない |