Я пытаюсь расширить схему человека FreeIPA, чтобы добавить country
в поле пользователя по умолчанию.
Насколько мне известно, FreeIPA реализует RFC 4519, который предоставляет поле страны.
Когда я сбрасываю схему FreeIPA (через ldapsearch -x -b cn=schema objectclasses attributetypes > schema.ldif
) Я вижу, что определение страны присутствует по умолчанию, но оно не является частью человека или его продолжением.
Итак, я создал следующий ldif (обратите внимание, что OID в основном случайный, я еще ничего не регистрировал, так как тестирую вещи вокруг:
dn: cn=schema
changetype: modify
add: objectclasses
objectclasses: ( 2.25.2866739172111323825341701611583088740684.14.2.1 NAME 'customPerson' SUP person STRUCTURAL MAY (country) X-ORIGIN 'Extending FreeIPA' )
Но когда я запускаю это через `ldapmodify8, я получаю следующую ошибку:
$ ldapmodify -D "cn=Directory Manager" -W -f customPerson.ldif
Enter LDAP Password:
modifying entry "cn=schema"
ldap_modify: Invalid syntax (21)
additional info: object class customPerson: Unknown allowed attribute type "country"
Что я сделал не так, и как это исправить, чтобы я мог использовать country
во всех моих пользователях?
Я действительно нашел ответ после того, как продолжил возиться с этим.
Оказывается country
не атрибут, а объектный класс, поэтому после добавления country
и friendlyCountry
в классы IPA objectuserclasses по умолчанию (через IPA Server> Configuration> User Options), я затем создал следующий файл обновления:
dn: uid=test,cn=users,cn=accounts,dc=example,dc=com
add:c:CH
add:objectClass:country
add:objectClass:friendlyCountry
add:co:Switzerland
Вам необходимо определить c
атрибут имеет это необходимо для обоих country
и friendlyCountry
.
Теперь я вижу это с помощью ipa user-show --all test
команда.