LDAP- добавление новой схемы атрибутов с использованием ldapmodify
Я пытаюсь добавить новую схему во FreeIPA, я следую учебному пособию " Расширение сервера FreeIPA", чтобы добавить новую схему, мне нужно использовать команду "ldapmodify". но я получаю этот результат:
[root@rnddomain schema]# ldapmodify -D "cn=admin" -W -f favorateColorName.ldif
Enter LDAP Password:
ldap_bind: No such object (32)
Я знаю, что многие уже спрашивали об этой теме, но ни один из их ответов не решил мою проблему. Это схема, которую я пытаюсь добавить:
dn: cn=schema
changetype: modify
add: attributeTypes
attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.2
NAME 'favoriteColorName'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'Extending FreeIPA' )
1 ответ
Я начну с далекого.
При привязке к LDAP необходимо указать DN привязки. В то время как Active Directory позволяет указывать rdn вместо полного DN (например, cn=Administrator), другие серверы LDAP не обязательно позволяют это делать. Кроме того, RDN может быть чем-то другим, чем cn
, В FreeIPA uid
атрибут используется - вместо использования cn=admin
вам нужно указать полное DN, которое должно быть uid=admin,cn=users,cn=accounts,dc=example,dc=com
, Вы можете получить DN пользователя всегда ipa user-find --raw --all --pkey-only <user>
:
$ ipa user-find --raw --all --pkey-only admin
--------------
1 user matched
--------------
dn: uid=admin,cn=users,cn=accounts,dc=example,dc=com
uid: admin
----------------------------
Number of entries returned 1
----------------------------
Однако знание полного DN администратора не поможет вам с обновлениями схемы. LDAP-сервер FreeIPA внутренне использует средства управления доступом, которые предотвращают изменение схемы кем-либо, кроме менеджера каталогов. Менеджер каталогов - это специальный аккаунт с полным DN cn=Directory Manager
, поэтому вы должны использовать его для импорта обновлений схемы.
Но я бы рекомендовал вам не использовать прямую ldapmodify для распространения схемы. FreeIPA имеет инструмент под названием ipa-ldap-updater, который дает хороший способ распространения таких обновлений - не только схемы, но и добавления новых записей и изменения существующих. Подробности о том, как добавлять новые записи или изменять конфигурацию, можно найти в моей статье блога здесь.
Для файлов схемы создайте файл с именем NNname.ldif
где NN - это число от 00 до 90, и поместите его где-нибудь. FreeIPA использует /usr/share/ipa/
для файлов схемы и /usr/share/ipa/updates
для обновления файлов, и вы можете узнать, как там все выглядит. Тогда беги ipa-ldap-updater --schema-file NNname.ldif
и он установит вашу схему. Смотрите страницу руководства для ipa-ldap-updater для получения дополнительной информации.
Синтаксис ipa-ldap-updater для схемы соответствует файлам схемы 389-ds, поэтому определение вашей схемы будет выглядеть так:
dn: cn=schema
attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.2
NAME 'favoriteColorName'
EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-ORIGIN 'Extending FreeIPA' )
Значения attributeTypes или objectClasses должны соответствовать стандартному синтаксису формата LDIF - если вы хотите разделить одно значение на несколько строк, строки продолжения должны начинаться с пробела (как выше).