我在使用运行时配置(cn = config)修改OpenLDAP安装的模式时遇到问题.我要做的是修改现有属性并将新属性添加到自定义架构.我尝试应用更改时得到的错误是“没有这样的对象”或“没有这样的价值”.使用JXplorer浏览器时,错误是:
原文链接:https://www.f2er.com/bash/385504.htmljavax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn={15}mySchema,cn=schema,cn=config'
在命令行的ldif文件上使用ldapmodify会引发相同的错误:
ldapmodify -h ldap://localhost/cn=config -x -p 389 -D cn=admin,cn=config -W -f modify.ldif modifying entry "cn={15}mySchema,cn=config" ldap_modify: No such object (32)
但奇怪的是,即使发生此错误,也会为slapd服务的当前实例提交更改.例如,如果我添加了新属性并修改了一个对象以包含这些属性,那么这些属性在使用该对象的条目中可用.我可以继续进行,好像变化有效.但是,如果重新启动slapd服务,则会还原更改.
如果我删除ldif文件中DN的前导{15}或属性值上的类似前缀,我会得到相同的错误(尽管可能由于其他原因):
modifying entry "cn=mySchema,cn=config" ldap_modify: No such object (32) matched DN: cn=schema,cn=config
更重要的是,我可以毫无问题地修改cn = config的其他条目(例如,olcDatabase = { – 1}前端,cn = config),并且更改会在服务重新启动时保持不变.只有当我尝试修改cn = schema,cn = config下的条目时才会发生错误.
服务器使用OpenLDAP 2.4.23运行CentOS 6.2,64位,它是通过yum安装的.我尝试了多个浏览器(JXplorer,Softerra LDAP Administrator)以及命令行,所有浏览器都具有相同的结果. slapd.d目录的所有者/组是ldap / ldap,即使将模式文件的权限修改为777也没有变化.在端口636(浏览器或命令行)上使用TLS也没有任何效果.
任何人都可以对此有所了解并解释可能阻止我通过cn = config修改架构的原因吗?
编辑:这是modify.ldif的内容:
dn: cn={15}mySchema,cn=config changetype: modify add: olcAttributeTypes olcAttributeTypes: ( 1.3.6.1.4.00000.2.3.14 NAME 'myTest' DESC 'This is only a test' EQUALITY caseIgnoreMatch Syntax 1.3.6.1.4.1.1466.115.121.1.15{128} )
我们使用我们的公司PEN代替00000,没有其他属性使用该OID.我发现在属性值中添加数字前缀没有区别,但前缀对于DN是必要的;没有它,错误意味着它所说的内容并且目录没有被修改.