1

我正在尝试向 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' )
4

1 回答 1

4

我将从远方开始。

绑定到 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.ldifNN 是 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 格式语法——如果要将单个值拆分为多行,则必须在续行前加上空格(如上)。

于 2015-05-09T13:43:12.737 回答