Назад | Перейти на главную страницу

Как мне установить новую схему для OpenLDAP в Debian 5 с динамическим сервером config = cn?

Я импортирую базу данных OpenLDAP с другого сервера, и во время импорта у меня возникли ошибки у некоторых пользователей, проблема в том, что mozillaAbPersonAlpha не действительный objectClass.

#!ERROR [LDAP Error Code 21 - objectClass: value #3 invalid per syntax]
...
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: dude@test.com
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude

AFAICT Кажется, что в моей установке OpenLDAP отсутствует схема для mozillaABPersonAlpha.

Но как мне установить эту схему?


РЕДАКТИРОВАТЬ: сервер использует новый бэкэнд конфигурации, поэтому нет никаких slapd.conf файл. Вместо этого есть /etc/slapd.d/ каталог со странным названием каталога (например, /etc/slapd.d/cn=config/).

Как мне добавить новую схему в этой ситуации?

Я отвечаю на свой вопрос, потому что хотел знать, как решить проблему при использовании нового slapd.d/dynamic/cn=config бэкэнд, и я не хотел возвращаться к slapd.conf метод. (Почти никто этим не занимается, AFAICT)

Когда я пытался добавить новую схему с помощью ldapadd, я всегда получал следующую ошибку:

ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f mozillaabpersonalpha.ldif
ldap_add: Insufficient access (50)

Так что BindDN Я использовал не имеет таких привилегий. Мне нужно будет настроить ACL или использовать rootDN для этой операции.

Не знаю почему, но при настройке slapd debian, он позволил мне создать учетную запись администратора для моего DIT, но ничего не упомянул о rootDN. После некоторого просмотра я нашел это Блог это объясняет, как установить пароль rootDN при использовании cn=config схема.

Итак, отредактировал файл /etc/ldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif и добавил следующее:

olcRootDN: cn=admin,cn=config
olcRootPW: mypassword

Мне пришлось перезапустить slapd, чтобы изменения вступили в силу (в этом нет необходимости, но ...). Чтобы проверить это, я выполнил следующую команду:

ldapwhoami -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword

И это сработало! Следующим шагом была загрузка mozillaAbPersonAlpha схема в формате ldif с использованием ldapadd:

ldapadd -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword -f mozillaabpersonalpha.ldif

Ответ был успешным

adding new entry "cn=mozillaabpersonalpha,cn=schema,cn=config"

Наконец, добавив одного пользователя, который зависит от mozillaABPersonAlpha схема теперь возможна. Например, файл newuser.ldif имеет это:

dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: dude@test.com
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude

И добавив его в новый каталог (не используя rootDN аккаунт) сейчас работает:

ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f usertest.ldif 
Enter LDAP Password: 
adding new entry "uid=somedude,cn=SomeGroup,cn=whatever,dc=test,dc=com

В вашем файле slapd.conf (5) будет (несколько?) "Include" операторов:

include         /etc/openldap/schema/core.schema

Вам необходимо загрузить файл схемы и поместить его в каталог schema / вместе с остальными уже существующими (все в одном месте проще) и изменить конфигурацию, чтобы включить его. Затем перезапустите OpenLDAP.

http://www.zytrax.com/books/ldap/ch6/#include

Копировать и вставлять эта схема в файл на вашем сервере и добавьте:

include /path/to/that/file.schema

в вашем slapd.conf и перезапустите slapd.