我将从远方开始。
绑定到 LDAP 时,需要指定绑定 DN。虽然 Active Directory 允许指定 rdn 而不是完整的 DN(例如 cn=Administrator),但其他 LDAP 服务器不需要允许这样做。此外,RDN 可能不是cn
. 在 FreeIPAuid
中使用了属性——而不是使用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 并不能帮助您进行架构更新。FreeIPA 的 LDAP 服务器在内部使用访问控制来防止目录管理员以外的任何人修改模式。Directory manager 是一个具有完整 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 格式语法——如果要将单个值拆分为多行,则必须在续行前加上空格(如上)。