免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3691 | 回复: 4
打印 上一主题 下一主题

[ldap] 请教OpenLDAP entry与属性匹配的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-18 03:48 |只看该作者 |倒序浏览
目前运行在旧版本OpenLDAP 2.0.27基础上的系统中有一个正常工作的DN如下:
dn: cmac=00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com
objectClass: top
objectClass: cm
cmac: 1,6,00:04:AC:AE:E5:4F

其中定义的cmac schema为
attributetype ( 1.3.6.1.4.1.11382.1.55
        NAME 'cmac'
        DESC 'Cable Modem MAC Address'
        EQUALITY caseIgnoreIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128}
        SINGLE-VALUE )

现在将系统升级到新版本OpenLDAP 2.3.32,根据新的应用系统需要将schema修改如下
attributetype ( 1.3.6.1.4.1.11382.1.55
        NAME 'cmac'
        DESC 'Cable Modem MAC Address'
        EQUALITY caseIgnoreMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
        SINGLE-VALUE )

当试图把前面的entry装入到新版本OpenLDAP 2.3.32时,出现如下错误:
error code 64 - value of naming attribute 'cmac' is not present in entry

已经试过将schema改回到和旧版本使用的相同,但结果还是出现同样的错误。现在的问题是,在OpenLDAP 2.3.32下试验的结果,必须将DN中的attribute行 "cmac: 1,6,00:04:AC:AE:E5:4F"改到和前面的"dn: cmac=00:04:AC:AE:E5:4F"相同,也就是必须把“cmac: 1,6,00:04:AC:AE:E5:4F”中的“1,6,”去掉,然后才能正常把这个DN装入到新版OpenLDAP 2.3.32中。因为应用系统的需要,必须使用“cmac: 1,6,00:11:22:33:44:55”这样的格式,我尝试过把DN行改为
dn: cmac=1,6,00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com来让其与“cmac: 1,6,00:04:AC:AE:E5:4F”相同,
但系统也不允许, 给出错误信息为:
Invalid name:dn: cmac=1,6,00:04:AC:AE:E5:4F, ou=inventory, dc=hugehard,dc=com。

请教大家的问题是:是不是新版本OpenLDAP 2.3.32规定dn:那一行的"cmac="定义的名字必须与后面的属性定义“cmac: ”后面的值完全一样才可以?或者是我的schema没有正确书写来满足我的需要?有没有可能找到一种解决方法来使用“cmac: 1,6,00:04:AC:AE:E5:4F”这样的属性值?在OpenLDAP 2.0.27中是已经成功地这样使用了的,但在2.3.32版中目前我还没找到怎么处理,希望各位帮忙出点主意。

谢谢先。

论坛徽章:
0
2 [报告]
发表于 2007-09-21 18:39 |只看该作者

学习...

这两个值应该一样才对啊,真是怪事情!关注中...
既然你可以导进去,你在把这个节点导出来看看,到底是怎么回事?或导出一个其它的普通点看看格式

论坛徽章:
0
3 [报告]
发表于 2007-09-21 21:56 |只看该作者

可能我写得有点复杂了你没完全看明白我的问题

原帖由 angel_z_yu 于 2007-9-21 18:39 发表
这两个值应该一样才对啊,真是怪事情!关注中...
既然你可以导进去,你在把这个节点导出来看看,到底是怎么回事?或导出一个其它的普通点看看格式


我的理解是这两个值应该一样(根据现在导入时的出错提示信息),但在原来的系统中确实使用了不一样的值却可以正常工作,所有类似的DN有数万条全都是这样的,差别是原来的系统使用的是OpenLDAP 2.0.27, 现在出错不能导入的是在OpenLDAP 2.3.32下。

现在我想弄明白的是,是否OpenLDAP 2.3.32本身的规定这两个值必须完全一样而在旧版本OpenLDAP 2.0.27中没有这样的规定?或者是因为系统配置或者SCHEMA的编写中有什么需要改动的? 因为应用系统的原因,最好的解决方案是在LDAP中保留原来的状态,否则需要另外找人改动原来的应用程序比较麻烦,如果能够通过改动SCHEMA等办法来完成就好了。

希望大家帮助提供信息和思路,谢谢。

论坛徽章:
0
4 [报告]
发表于 2007-09-23 13:30 |只看该作者

回复 #3 001CEO 的帖子

是这样,旧版本在属性值检查上做的比较差,dn中的值如果在属性值中不存在也不会出错。
新版本对这方面进行了加强,如果实在不想修改程序,把配置中的schemacheck on
变成off就行了。

论坛徽章:
0
5 [报告]
发表于 2007-09-25 02:52 |只看该作者

谢谢 zhjfirst,不过问题还是没解决

不过又看了一遍官方网站和MAN PAGE,只发现有对REPLICA的SCHEMA CHECK设置并且缺省值是OFF

syncrepl rid=<replica ID>
                provider=ldap://<hostname>[:port]
                [schemachecking=on|off]

对于master LDAP,没找到怎么做可以关闭SCHEMA CHECK
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP