Я импортирую базу данных 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.
Копировать и вставлять эта схема в файл на вашем сервере и добавьте:
include /path/to/that/file.schema
в вашем slapd.conf и перезапустите slapd.