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' )

person Muhmmad Aziz    schedule 09.05.2015    source источник


Ответы (1)


Начну издалека.

При привязке к LDAP необходимо указать DN привязки. В то время как Active Directory позволяет указывать rdn вместо полного DN (например, cn=Администратор), другие серверы 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 — если вы хотите разделить одно значение на несколько строк, строки продолжения должны начинаться с пробела (как указано выше).

person abbra    schedule 09.05.2015