LDAP-使用ldapmodify添加新的属性模式

时间:2015-05-09 10:10:21

标签: ldap freeipa

我正在尝试向FreeIPA添加新架构,我正在按照教程" Extending the FreeIPA Server",为了添加我必须使用的新架构' ldapmodify&# 39;命令。但我得到了这个结果:

[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' )

1 个答案:

答案 0 :(得分:3)

我将从远方开始。

绑定到LDAP时,需要指定绑定DN。虽然Active Directory允许指定rdn而不是完整DN(例如cn = Administrator),但其他LDAP服务器不必允许这样做。此外,RDN可能不是cn。在FreeIPA中使用uid属性 - 而不是使用cn=admin,您需要指定应为uid=admin,cn=users,cn=accounts,dc=example,dc=com的完整DN。您始终可以ipa user-find --raw --all --pkey-only <user>获取用户的DN:

$ 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服务器在内部使用访问控制来阻止对目录管理器以外的任何人进行模式修改。目录管理员是一个具有完整DN cn=Directory Manager的特殊帐户,因此您应该使用它来导入架构更新。

但我建议你不要使用直接ldapmodify进行架构分发。 FreeIPA有一个名为ipa-ldap-updater的工具,它提供了一种很好的方式来分发这些更新 - 不仅是模式,还包括添加新条目和修改现有条目。您可以在我的博客文章here中查看有关如何添加新条目或修改配置的详细信息。

对于模式文件,创建一个名为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格式语法 - 如果要将单个值拆分为多行,则必须在前面加上一个空格(如上所述)。