我已经在 alpine 3.12.1 上设置了 OpenLDAP 2.4.50 cosine
,并使用 向其提供了inetorgperson
和LDIF 模式。现在我想添加一个自定义对象类。我添加了一个条目,objectclass ,它工作正常。现在我想添加一个新的 objectClass ,它将为我提供某种带有额外信息的帐户类。这个想法很简单:创建一个从 和 继承的对象类。她去了我的 LDIF...nis
ldapadd
cn=mystuff,cn=schema,cn=config
olcSchemaConfig
person
posixAccount
dn: cn={4}mystuff,cn=schema,cn=config
changetype: modify
add: olcObjectClasses
olcObjectClasses: ( 1.3.6.1.4.1.999999.1.2.3 NAME 'myAccount' DESC 'A full acc
ount as I want it.' SUP ( person $ posixAccount ) STRUCTURAL )
问题是 OpenLDAP 不允许我这样做。它指出olcObjectClasses: user-defined ObjectClass has inappropriate SUPerior: "posixAccount"
我认为 LDAP 不允许多重继承,因为我试图使用它,但我找不到任何参考资料告诉我原因。
长话短说:我怎样才能创建一个包含person
和的对象类posixAccount
?如果不可能,请告诉我确切原因。
答案1
我自己找到了解决方案https://www.rfc-editor.org/rfc/rfc4512。我尝试创建的 objectClass 是 ,STRUCTURAL
而其中一个超类 ( posixAccount
) 是AUXILIARY
。根据 RFC,这是不允许的:
“结构对象类不能对辅助对象类进行子类化。”
此外第 2.4.3 节状态
“辅助对象类不能对结构对象类进行子类化。”
最后,这意味着,如果超类在 和 方面混合使用,则对象类的多重继承将永远无法工作STRUCTURAL
。AUXILIARY
我看不出这样做有什么好的理由,但无论如何,根据规范,这根本不可能。
答案2
我认为你遇到了这个限制https://www.rfc-editor.org/rfc/rfc4512#section-2.4.2
“对象或别名条目的特征在于恰好有一个结构对象类超类链,该链具有单个结构对象类作为最下属的对象类。”