我是 OpenLDAP 管理的新手。我的目标是学习如何创建自定义架构,并以此方式自定义“我的”目录服务器。
我尝试添加一个可选属性 - ipPhone。创建了一个模式(虚拟),然后将其转换为以下 LDIF 文件:
dn: cn=dummy,cn=schema,cn=config
changetype: add
objectClass: olcSchemaConfig
cn: dummy
dn: cn=dummy,cn=schema,cn=config
changetype: modify
#changetype: add
add: olcAttributeTypes
olcAttributeTypes: {0}( 1.3.6.1.4.1.4203.666.100.123 NAME 'ipPhone'
DESC 'ip telephone internal or routable number' SUP telephoneNumber )
-
add: olcObjectClasses
olcObjectClasses: {0}( 1.3.6.1.4.1.4203.666.100.1 NAME 'dummyPerson'
DESC 'Dummy-server user' SUP inetOrgPerson STRUCTURAL MAY ipPhone )
当我尝试使用 ldapmodify(1) 添加此模式时,出现以下错误:
modifying entry "cn=dummy,cn=schema,cn=config"
ldap_modify: No such object (32)
matched DN: cn=schema,cn=config
我做错了什么?另外,我在哪里可以阅读有关“changetype”的信息?我不确定在哪里为我的 LDIF 使用“modify”或“add”。
谢谢。
答案1
变更类型对整个条目而言是全局的。dn 下需要一个单一的 changetype:在您的示例中,“add”是正确的,因为 dn 之前在目录中不存在。
然后你必须将这些对堆叠起来:
attribute_type: attribute_value
这添加,代替或者删除关键字在这里是不合适的:它们应该与changetype: modify
; 一起使用,出于同样的原因,用于分隔属性的破折号 (-) 也不合适。
整个 ldif 看起来像:
dn: cn=dummy,cn=schema,cn=config
changetype: add
cn: dummy
objectClass: olcSchemaConfig
olcAttributeTypes: {0}( 1.3.6.1.4.1.4203.666.100.123 NAME 'ipPhone'
DESC 'ip telephone internal or routable number' SUP telephoneNumber )
olcObjectClasses: {0}( 1.3.6.1.4.1.4203.666.100.1 NAME 'dummyPerson'
DESC 'Dummy-server user' SUP inetOrgPerson STRUCTURAL MAY ipPhone )