我使用刚安装的 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
那么,我错在哪里了?谢谢,非常感谢您浪费时间。
附言
ldapsearch
在 Debian 上使用-h
和-b
参数可以成功从 CentOS LDAP 服务器打印 ldap 内容。Debian 框上的 LDAP 帐户管理器 (LAM) 显示 Debian 的 LDAP 内容。
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 的访问权限政策略有不同。
再次感谢大家浪费您的时间!