Sun Java System Directory Server Enterprise Edition 6.3 管理指南

从命令行创建 CoS 定义条目

所有 CoS 定义条目都具有 LDAPsubentry 对象类,并且是从 cosSuperDefinition 对象类继承来的。此外,每种类型的 CoS 都从特定对象类继承而来,并包含相应属性。下表列出了与每种类型的 CoS 定义条目相关联的对象类和属性。

表 10–1 CoS 定义条目中的对象类和属性

CoS 类型 

CoS 定义条目 

指针 CoS 

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosPointerDefinition

cosTemplateDN: DN

cosAttribute: attributeName override merge

间接 CoS 

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosIndirectDefinition

cosIndirectSpecifier: attributeName

cosAttribute: attributeName override merge

传统 CoS 

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosClassicDefinition

cosTemplateDN: DN

cosSpecifier: attributeName

cosAttribute: attributeName override merge

cosAttribute 始终为多值属性。每个值都定义一个由 CoS 机制生成的属性。

可以在 CoS 定义条目中使用以下属性。有关其中每个属性的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Man Page Reference》中的各个属性。

表 10–2 CoS 定义条目属性

属性 

在 CoS 定义条目中的用途 

cosAttribute

attributeName override merge

定义要生成值的已计算属性的名称。此属性为多值属性,每个值代表将通过模板生成值的属性的名称。overridemerge 限定符指定在此表后面所述的特殊情况下如何计算 CoS 属性值。

attributeName 不能包含任何子类型。带有子类型的属性名称将被忽略,但会处理 cosAttribute 的其他值。

cosIndirectSpecifier

attributeName

定义目标条目中属性的名称,间接 CoS 将使用此属性的值标识模板条目。已命名的属性称为说明符,并且必须包含每个目标条目中的完整 DN 字符串。此属性为单值属性,但 attributeName 可以是多值属性,以指定多个模板。

cosSpecifier

attributeName

定义目标条目中属性的名称,传统 CoS 将使用此属性的值标识模板条目。已命名的属性称为说明符,并且必须包含可以在模板条目 RDN 中找到的字符串。此属性为单值属性,但 attributeName 可以是多值属性,以指定多个模板。

cosTemplateDN

DN

提供模板条目的完整 DN(对于指针 CoS 定义)或基 DN(对于传统 CoS)。此属性为单值属性。 


注 –

无法通过将 isMemberOf 属性用作 CosSpecifier,来使静态组的所有成员自动继承公用的已计算属性值。


cosAttribute 属性允许 CoS 属性名称后面有两个限定符,即 override 限定符和 merge 限定符。

override 限定符描述当条目中已实际存在 CoS 动态生成属性时的行为。override 可为以下任一选项:

merge 限定符要么不使用,要么为 merge-schemes 形式。此限定符允许 CoS 已计算属性成为多值属性,这些值可以来自多个模板或多个 CoS 定义 。有关详细信息,请参见多值 CoS 属性

覆盖实际的属性值

可以创建包含 override 限定符的指针 CoS 定义条目,如下所示:


dn: cn=pointerCoS,dc=example,dc=com
objectclass: top
objectclass: LDAPsubentry
objectclass: cosSuperDefinition
objectclass: cosPointerDefinition
cosTemplateDn: cn=exampleUS,cn=data
cosAttribute: postalCode override

此指针 CoS 定义条目表示条目与生成 postalCode 属性值的模板条目 cn=exampleUS,cn=data 相关联。override 限定符表示此值优先于 postalCode 属性值(如果目标条目中存在该属性)。


注 –

如果 CoS 属性是使用 operationaloverride 限定符定义的,则无法对 CoS 范围内任何条目中的“实际”属性值执行写入操作。


多值 CoS 属性

指定 merge-schemes 限定符时,CoS 已生成属性在以下两种情况下可以成为多值属性:

这两种情况可以同时发生,并定义更多的值。但是,重复的值只会在生成的属性中返回一次。

如果不使用 merge-schemes 限定符,模板条目的 cosPriority 属性将用于确定已生成属性在所有模板中的单一值。下一部分将介绍此方案。

merge-schemes 限定符永远不会将目标中定义的“实际”值与通过模板生成的值进行合并。merge 限定符独立于 override 限定符。所有配对情况都可能出现,并且每种情况表示的行为是互补的。 此外,还可以在属性名称后按任意顺序指定这些限定符。


注 –

如果同一属性具有多个 CoS 定义,则这些定义必须具有相同的 overridemerge 限定符。如果 CoS 定义中存在不同的限定符对,将从所有定义中任意选择一种组合。


CoS 属性优先级

如果存在多个 CoS 定义或多值说明符,但未使用 merge-schemes 限定符,目录服务器将使用优先级属性选择用于定义已计算属性单一值的单一模板。

cosPriority 属性表示纳入考虑的所有模板中某一特定模板的全局优先级。优先级为零代表最高优先级。不包含 cosPriority 属性的模板被视为优先级最低。如果两个或两个以上的模板提供一个属性值,但却具有相同的优先级或没有优先级,此时将任意选择一个值。

使用 merge-schemes 限定符时不会考虑模板优先级。在合并时,纳入考虑的所有模板将定义一个值,而不管这些模板定义的优先级如何。cosPriority 属性是在 CoS 模板条目上定义的,如以下部分所述。


注 –

cosPriority 属性不能具有负值。此外,由间接 CoS 生成的属性不支持优先级。不要在间接 CoS 定义的模板条目中使用 cosPriority