[EMAIL PROTECTED]

 OpenLDAPを試していて、ldapaddとldapdeleteはできるのにldapsearchが必
ず「result: 32 No such object」を返すという状況に陥っています。何故な
のでしょう…?

 やりたいことは、UNIXとWindowsのユーザ管理をOpenLDAPで一本化すること
で、

        http://www.abk.nu/~nabe/document/openldap.htm
        【FreeBSD 5.3】OpenLDAP の設定

を参考にしています。設定ファイル等は最後にまとめておきます。


 OSはFreeBSD/amd64 6.0-RELEASE-p4で、2月28日にcvsupしたportsから

cyrus-sasl-2.1.21_2
openldap-sasl-client-2.2.30
openldap-sasl-server-2.2.30

をインストールしました。slapdを起動して、ldapaddを実行すると、

------------------------------------------------------------------------
# ldapadd -x -D "cn=ldaproot,dc=exp1" -W -f ldif/base2.ldif 
Enter LDAP Password: 
adding new entry "dc=exp1"

adding new entry "ou=People,dc=exp1"
------------------------------------------------------------------------

のように、正常に追加できたように見えます。ldapsearchを実行すると、

------------------------------------------------------------------------
# ldapsearch -x ""
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting:  
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
------------------------------------------------------------------------

となります。この時、/var/log/debug.logには、

------------------------------------------------------------------------
# tail /var/log/debug.log
Mar  2 11:27:48 server3 slapd[26979]: conn=10 op=1 SEARCH RESULT tag=101 err=0 
nentries=1 text=
Mar  2 11:27:48 server3 slapd[26979]: conn=10 op=2 UNBIND
Mar  2 11:27:48 server3 slapd[26979]: conn=10 fd=10 closed
Mar  2 11:27:57 server3 slapd[26979]: conn=11 fd=10 ACCEPT from 
IP=127.0.0.1:59154 (IP=0.0.0.0:389)
Mar  2 11:27:57 server3 slapd[26979]: conn=11 op=0 BIND dn="" method=128
Mar  2 11:27:57 server3 slapd[26979]: conn=11 op=0 RESULT tag=97 err=0 text=
Mar  2 11:27:57 server3 slapd[26979]: conn=11 op=1 SRCH base="" scope=2 deref=0 
filter="(objectClass=*)"
Mar  2 11:27:57 server3 slapd[26979]: conn=11 op=1 SEARCH RESULT tag=101 err=32 
nentries=0 text=
Mar  2 11:27:57 server3 slapd[26979]: conn=11 op=2 UNBIND
Mar  2 11:27:57 server3 slapd[26979]: conn=11 fd=10 closed
------------------------------------------------------------------------

とあります。

 登録に失敗したのかと思って再度ldapaddすると、

------------------------------------------------------------------------
# ldapadd -x -D "cn=ldaproot,dc=exp1" -W -f ldif/base2.ldif
Enter LDAP Password: 
adding new entry "dc=exp1"
ldap_add: Already exists (68)
------------------------------------------------------------------------

となるので、登録できているようです。別のマシンからldapsearchすると、

------------------------------------------------------------------------
# ldapsearch -x -h server3 ""
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting:  
#

# exp1
dn: dc=exp1

# People, exp1
dn: ou=People,dc=exp1

以下省略
------------------------------------------------------------------------

のように読み出しができます。やはり登録はできているようです。このマシン
は、FreeBSD/i386 5.4-RELEASE-p1 にpackagesから
openldap-sasl-server-2.2.23と同clientをインストールしたものです。この
マシンでは、同じ手順で登録と読み出しができています。

 それならば、openldap-2.2.23だと動くのか…と思って、amd64マシンでソー
スからコンパイルしてみましたが、

------------------------------------------------------------------------
# /tmp/openldap-2.2.23/clients/tools/ldapsearch -x ""
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting:  
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
------------------------------------------------------------------------

となりました。それ以外に、amd64マシンで

・Berkeley DBを外してみる
・bdbの変わりにhdbやldbmを使ってみる
・2.3.19を使ってみる

も試してみましたが、結果は同じでした。amd64だと問題があるのかと思って、

FreeBSD/i386 4.11-RELEASE-p13
openldap-sasl-client-2.2.30  (2月19日にcvsupしたports)
openldap-sasl-server-2.2.30  (2月19日にcvsupしたports)

という環境でも実験したところ、こちらも同じエラーになりました。で、わけ
がわからなくなってきました。


【設定ファイル等】
------------------------------------------------------------------------
[slapd.conf]
 コメントと空行を除いてあります。

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/corba.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/openldap.schema
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
access to attrs=userPassword
        by self write
        by users read
        by anonymous auth
access to *
        by self write
        by users read
        by anonymous read
database        bdb
suffix          "dc=exp1"
rootdn          "cn=ldaproot,dc=exp1"
rootpw          rootpass
directory       /var/db/openldap-data
index   default         pres,eq
index   objectClass
index   uid,uidNumber
index   memberUid,gidNumber
------------------------------------------------------------------------
[/etc/rc.conf]

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/";'
slapd_sockets="/var/run/openldap/ldapi"
------------------------------------------------------------------------
[ldif/base2.ldif]

dn: dc=exp1
objectClass: dcObject
objectClass: organization
dc: exp1
o: Experiments

dn: ou=People,dc=exp1
objectClass: organizationalUnit
ou: People
------------------------------------------------------------------------
----
[EMAIL PROTECTED] 大学院 自然科学研究科 電子情報科学専攻
[EMAIL PROTECTED]

メールによる返信