Пытаюсь настроить OpenLDAP с нуля, сразу же начал с динамической конфигурации, создал файл ldif в него все по инструкции записал, пример конфигурации: my.ldif
# Глобальные настройки
dn: cn=config
objectClass: olcGlobal
cn: config
olcPidFile: /var/run/openldap/slapd.pid
olcArgsFile: /var/run/openldap/slapd.args
olcLogLevel: -1
# Определения для схем
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
# подгружаем нужные схемы
include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/openldap.ldif
# глобальные параметры баз данных
dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {-1}frontend
olcAccess: to * by * write
# подгружаем модули
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: accesslog.la
# Изменяем доступ к глобальной базе cn=config
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW: secret
olcAccess: to * by * none
# добавляем бэкенд BDB и добавляем новый суффикс
dn: olcDatabase=bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: bdb
olcSuffix: dc=test,dc=ru
olcRootDN: cn=admin,dc=test,dc=ru
olcRootPW: admin
olcDbDirectory: /var/lib/ldap/test.ru
olcAccess: to attrs=userPassword
by self write
by anonymous auth
by dn.base="cn=admin,dc=test,dc=ru" write
by * none
olcAccess: to *
by self write
by dn.base="cn=admin,dc=test,dc=ru" write
by * read
создаем динамическую конфигурацию с помощью команды:
| Код: |
| slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/my.ldif |
запускаем сервак, все проходит отлично, сервак запущен
Создаем LDIF с данными data.ldif
dn: dc=ru
objectClass: dcObject
objectClass: organization
o: ru Domain
dc: ru
dn: dc=test,dc=ru
objectclass: dcObject
objectclass: organization
o: Test
dc: test
dn: cn=admin,dc=test,dc=ru
objectclass: organizationalRole
cn: admin
dn: ou=users,dc=test,dc=ru
ou: users
objectclass: top
objectclass: organizationalUnit
добавляем командой:
| Код: |
| ldapadd -x -D"cn=config" -W -f add.ldif adding new entry "dc=ru" ldap_add: Server is unwilling to perform (53) additional info: no global superior knowledge |
выдает ошибку.
поступаем подругому, изменяем немного data.ldif (комментируем dc=ru)
#dn: dc=ru
#objectClass: dcObject
#objectClass: organization
#o: ru Domain
#dc: ru
#
dn: dc=test,dc=ru
objectclass: dcObject
objectclass: organization
o: Test
dc: test
dn: cn=admin,dc=test,dc=ru
objectclass: organizationalRole
cn: admin
dn: ou=users,dc=test,dc=ru
ou: users
objectclass: top
objectclass: organizationalUnit
и выполняем командой
| Код: |
| ldapadd -x -D"cn=admin,dc=test,dc=ru" -W -f add.ldif |
данные добавились.
Вопрос, почему у меня cn=config не работает (с ldap неделю назад начал разбираться), во frontend добавил же правило что каждый может изменять все что ему заблагорассудится, объясните на пальцах как это работает
Еще почему у меня не получатся создать отдельный домен например dc=net, на соседнем серваке стоит Zimbra на их ldap все создается и удаляется
Added after 7 minutes:
поиск тоже не так как хотелось бы работает
пытаемся искать все начиная от dc=ru
| Код: |
| ldapsearch -LL -x -W -D 'cn=admin,dc=test,dc=ru' -s sub -b 'dc=ru' '(objectClass=*)' version: 1 No such object (32) |
пытаемся искать от dc=test,dc=ru
| Код: |
| ldapsearch -LL -x -W -D 'cn=admin,dc=test,dc=ru' -s sub -b 'dc=test,dc=ru' '(objectClass=*)' version: 1 dn: dc=test,dc=ru objectClass: dcObject objectClass: organization o: Test dc: test dn: cn=admin,dc=test,dc=ru objectClass: organizationalRole cn: admin dn: ou=users,dc=test,dc=ru ou: users objectClass: top objectClass: organizationalUnit |
Поиск одинаково работает с DN = cn=confing и cn=admin,dc=test,dc=ru