我正在尝试扩展 FreeIPA 人员模式以country
在默认用户中添加字段。
据我所知,FreeIPA 确实实现了 RFC 4519,它确实提供了 [国家字段][1]。
当我转储 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
在所有用户中使用该字段?[1]:https://www.rfc-editor.org/rfc/rfc4519#ref-X.521
答案1
经过不断的摸索,我确实找到了答案。
事实证明country
不是一个属性,而是一个对象类,因此在将country
和friendlyCountry
添加到默认 IPA 对象用户类(通过 IPA 服务器 > 配置 > 用户选项)后,我创建了以下更新文件:
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
。