ldapadd 可以工作,但是 ldapsearch 不可以 (openldap)

ldapadd 可以工作,但是 ldapsearch 不可以 (openldap)

我使用刚安装的 Debian 6 和 openldap 2.4。我也有 CentOS 机器和 openldap 2.3。我从 centOS(工作配置)机器创建 .ldif 文件,并成功将 ldif 中的所有条目添加到 Debian 的 openldap。之后,我尝试使用

ldapsearch -xLLL

并出现错误

No such object (32)

命令

ldapsearch -xLLL -b dc=pgtk,dc=edu,dc=ru

也不起作用。我就是不明白哪里出了问题?

这是我的 slapd.conf

loglevel 0

modulepath /usr/lib/ldap
moduleload back_bdb.la

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/samba.schema

database bdb
suffix "dc=pgtk,dc=edu,dc=ru"
directory /var/lib/ldap

rootdn "cn=root,dc=pgtk,dc=edu,dc=ru"
rootpw {SSHA}Fq0LHya+lD4356rE5B91snwP5390fDUg

index objectClass                       eq,pres
index ou,cn,sn,mail,givenname           eq,pres,sub,approx
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub
index entryCSN,entryUUID                eq
index sambaSID,sambaPrimaryGroupSID     eq
index sambaDomainName                   eq

access to attrs=userPassword
    by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
    by self write
    by anonymous auth
access to attrs=sambaLMPassword
    by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
    by self write
    by anonymous auth
access to attrs=sambaNTPassword
    by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
    by self write
    by anonymous auth
access to *
    by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
    by * read

和我的 ldap.conf

BASE    dc=pgtk,dc=edu,dc=ru
URI     ldap://192.168.0.249

那么,我错在哪里了?谢谢,非常感谢您浪费时间。

附言

  1. ldapsearch在 Debian 上使用-h-b参数可以成功从 CentOS LDAP 服务器打印 ldap 内容。

  2. Debian 框上的 LDAP 帐户管理器 (LAM) 显示 Debian 的 LDAP 内容。

  3. slapcat在 Debian 框上不带任何参数即可打印 LDAP 内容。

答案1

我找到解决方案了!是访问权限的问题。应该是全局访问规则

access to * by * read

在任何数据库和访问权限定义之前。愚蠢的错误,但我认为

access to *
    by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
    by * read

足以让所有人拥有对所有对象的完全读取访问权限。在 CentOS 机器上的 openldap 2.3 中,这已经足够了。看来 openldap 2.4 的访问权限政策略有不同。

再次感谢大家浪费您的时间!

相关内容