OpenLDAP on MacOSX

 MacOSXにはOpenLDAPが標準でインストールされているようなので、動かしてみる。
 ご意見とか、間違いのご指摘とかあれば、tmiya@bu.iij4u.or.jp までお願いします。

目次


実施環境

H/W : iBook G4
OS: MacOSX 10.4.2 + 付属のXcodeインストール済

参考資料

下記の情報を参考にしました。

OpenLDAPの構成と起動

OpenLDAPの構成

★ OpenLDAPの構成は、構成ファイルである /etc/openldap/slapd.conf を編集することで行う。

 OpenLDAPの構成ファイル。(編集前)
[miyamoto:~] miyamoto% sudo cat /etc/openldap/slapd.conf
Password:
##
# slapd.conf file for NetInfo bridge
##

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/samba.schema
include         /etc/openldap/schema/apple.schema
pidfile         /var/run/slapd.pid
argsfile        /var/run/slapd.args
allows          bind_v2
schemacheck     off

database        netinfo
suffix          ""
flags           DSENGINE_FLAGS_NATIVE_AUTHORIZATION DSSTORE_FLAGS_ACCESS_READWRITE
datasource      /var/db/netinfo/network.nidb
include         /etc/openldap/schema/netinfo.schema
[miyamoto:~] miyamoto%


★ slapd.conf
を、slapd.conf の man を見つつ修正する。17-23行の部分が新たな定義箇所。

 database定義の順序は大事。
suffix "dc=test-domain""" の一部と判断されないように、先に書く必要がある。(実際はコメント化してるので関係無いが)
 database: netinfoをコメント化
28行目の /var/db/netinfo/network.nidb は存在しないためエラーになる。なので25-29行目はコメント化。

miyamoto:/etc/openldap miyamoto$ sudo cp -p slapd.conf slapd.conf.org
miyamoto:/etc/openldap miyamoto$ sudo vi slapd.conf
miyamototakashinokonpyuta:/etc/openldap miyamoto$ sudo cat -n /etc/openldap/slapd.conf
     1  ##
     2  # slapd.conf file for NetInfo bridge
     3  ##
     4
     5  include         /etc/openldap/schema/core.schema
     6  include         /etc/openldap/schema/cosine.schema
     7  include         /etc/openldap/schema/nis.schema
     8  include         /etc/openldap/schema/inetorgperson.schema
     9  include         /etc/openldap/schema/misc.schema
    10  include         /etc/openldap/schema/samba.schema
    11  include         /etc/openldap/schema/apple.schema
    12  pidfile         /var/run/slapd.pid
    13  argsfile        /var/run/slapd.args
    14  allows          bind_v2
    15  schemacheck     off
    16
    17  database        bdb
    18  suffix          "dc=test-domain"
    19  directory       /var/db/openldap/openldap-data
    20  index           objectClass     eq
    21  index           cn,sn,uid,givenName,mail        pres,eq,approx,sub
    22  rootdn          "cn=root,dc=test-domain"
    23  rootpw          {SSHA}XydkkAkLDC9KNxlrZkgzUrAecmYq7C9R
    24
    25  #database        netinfo
    26  #suffix          ""
    27  #flags           DSENGINE_FLAGS_NATIVE_AUTHORIZATION DSSTORE_FLAGS_ACCESS_READWRITE
    28  #datasource      /var/db/netinfo/network.nidb
    29  #include         /etc/openldap/schema/netinfo.schema
    30
miyamototakashinokonpyuta:/etc/openldap miyamoto$ 


★ 但しパスワードは下記のように生成する。

miyamototakashinokonpyuta:~ miyamoto$ slappasswd -v -s パスワード文字列
{SSHA}XydkkAkLDC9KNxlrZkgzUrAecmYq7C9R

★ 構成ファイルを起動前にチェックする。

miyamoto:/etc/openldap miyamoto$ sudo slaptest -v -f /etc/openldap/slapd.conf
config file testing succeeded
miyamoto:/etc/openldap miyamoto$

OpenLDAPの起動

★ 起動する

miyamoto:/etc/openldap miyamoto$ sudo /usr/libexec/slapd  
Password:
miyamoto:/etc/openldap miyamoto$

★ 動作確認

 ポート389でLISTENしていることを確認。

miyamoto:/etc/openldap miyamoto$ sudo netstat -an | grep 389
tcp4       0      0  *.389                  *.*                    LISTEN
tcp6       0      0  *.389                  *.*                    LISTEN
miyamoto:/etc/openldap miyamoto$

 ldapsearch
の実行

miyamoto:~ miyamoto$ ldapsearch -x -b '' -s base +                                                 
# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: +
#

#
dn:
structuralObjectClass: OpenLDAProotDSE
namingContexts: dc=test-domain
supportedControl: 2.16.840.1.113730.3.4.18
supportedControl: 2.16.840.1.113730.3.4.2
supportedControl: 1.3.6.1.4.1.4203.1.10.1
supportedControl: 1.2.840.113556.1.4.1413
supportedControl: 1.2.840.113556.1.4.1339
supportedControl: 1.2.840.113556.1.4.319
supportedControl: 1.2.826.0.1.334810.2.3
supportedExtension: 1.3.6.1.4.1.1466.20037
supportedExtension: 1.3.6.1.4.1.4203.1.11.1
supportedExtension: 1.3.6.1.4.1.4203.1.11.3
supportedFeatures: 1.3.6.1.4.1.4203.1.5.1
supportedFeatures: 1.3.6.1.4.1.4203.1.5.2
supportedFeatures: 1.3.6.1.4.1.4203.1.5.3
supportedFeatures: 1.3.6.1.4.1.4203.1.5.4
supportedFeatures: 1.3.6.1.4.1.4203.1.5.5
supportedLDAPVersion: 2
supportedLDAPVersion: 3
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: GSSAPI
subschemaSubentry: cn=Subschema

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
miyamoto:~ miyamoto$


★ rootdn に対応した entry を作る。

 普通に OpenLDAP をインストールすればインストール時に作られるはず。今回は仕方なく手で作る。

miyamoto:~/openldap miyamoto$ cat dc_test-domain.ldif
dn: dc=test-domain
objectClass: dcObject
dc: test-domain

miyamoto:~/openldap miyamoto$ sudo slapadd -v -f /etc/openldap/slapd.conf -l dc_test-domain.ldif
added: "dc=test-domain" (00000001)
miyamototakashinokonpyuta:~/openldap miyamoto$ cat cn_root.dc_test-domain.ldif
dn: cn=root,dc=test-domain
objectClass: organizationalRole
cn: root
description: rootdn
userPassword: {SSHA}XydkkAkLDC9KNxlrZkgzUrAecmYq7C9R

miyamoto:~/openldap miyamoto$ sudo slapadd -v -l cn_root.dc_test-domain.ldif
Password:
added: "cn=root,dc=test-domain" (00000002)
miyamoto:~/openldap miyamoto$

 再起動する。

miyamoto:/etc/openldap miyamoto$ sudo cat /var/run/slapd.pid
1464
miyamoto:/etc/openldap miyamoto$ sudo kill -KILL 1464
miyamoto:/etc/openldap miyamoto$ sudo /usr/libexec/slapd

★ ldapsearch を試す
 SASL の構成とか設定をしていないため、-x なしでは動かない。

miyamoto:/etc/openldap miyamoto$ ldapsearch -D cn=root,dc=test-domain -w パスワード -x -b dc=test-domain "objectClass=*"
# extended LDIF
#
# LDAPv3
# base <dc=test-domain> with scope sub
# filter: objectClass=*
# requesting: ALL
#

# test-domain
dn: dc=test-domain
objectClass: dcObject
dc: test-domain

# root, test-domain
dn: cn=root,dc=test-domain
objectClass: organizationalRole
cn: root
description: rootdn
userPassword:: e1NTSEF9WHlka2tBa0xEQzlLTnhsclprZ3pVckFlY21ZcTdDOVI=

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
miyamoto:/etc/openldap miyamoto$