Я использую только что установленный Debian 6 с openldap 2.4. У меня тоже есть CentOS с openldap 2.3. Я создаю файл .ldif из окна CentOS (рабочая конфигурация) и успешно добавляю все записи из ldif в openldap Debian. После этого я пытаюсь использовать
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
Итак, где я ошибался? С уважением, большое спасибо за потраченное время.
P.S.
ldapsearch
на Debian с -h
и -b
параметры могут успешно печатать содержимое ldap с сервера CentOS LDAP.
Диспетчер учетных записей LDAP (LAM) в окне Debian показывает содержимое LDAP Debian.
slapcat
без каких-либо параметров в окне Debian выводит содержимое LDAP.
Я нашел решение! Это были права доступа. Должно быть глобальное правило доступа
access to * by * read
перед определением любой базы данных и прав доступа. Глупая ошибка, но я думал, что
access to *
by dn.base="uid=ldap,ou=Users,dc=pgtk,dc=edu,dc=ru" write
by * read
Достаточно для полного доступа на чтение всех объектов всем лицам. В openldap 2.3 на CentOS этого достаточно. Похоже, что в openldap 2.4 политика прав доступа немного отличается.
Еще раз спасибо за потраченное время!