Начну издалека.
При привязке к 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