Mac OSXにOpenLDAPを導入・設定する手順 [P1]

  • 2
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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されていない