所有 CoS 定義項目皆有 LDAPsubentry 物件類別,且繼承 cosSuperDefinition 物件類別。此外,每種 CoS 類型皆繼承特定物件類別並包含對應的屬性。下表列出與各種 CoS 定義項目類型相關的物件類別與屬性。
表 9–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.2 Man Page Reference」中個別屬性的說明。
表 9–2 CoS 定義項目屬性
屬性 |
CoS 定義項目內的用途 |
---|---|
cosAttribute attributeName override merge |
定義要產生值的運算屬性名稱。此屬性為多值,每個值代表其值會從範本產生的屬性名稱。override 與 merge 限定元指定在此表之後所述的特殊案例中,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 限定元可以是下列其中之一:
default (預設) (或無限定元) - 表示當屬性類型與運算屬性類型相同時,伺服器不會覆寫儲存在項目中的實際屬性值。
operational - 表示只有在搜尋中明確請求時,才會傳回該屬性。操作屬性不需要通過模式檢查便會傳回。operational 限定元的運作方式與 override 限定元相同。
如果屬性在模式中也定義為操作,您僅能有一個操作屬性。例如,如果 CoS 產生 description 屬性的值,由於 description 屬性在模式中未標示為操作屬性,因此您無法使用 operational 限定元。
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 屬性,則此值會取代屬性值。
如果使用 operational 或 override 限定元定義 CoS 屬性,則無法在 CoS 範圍內任何項目中的屬性「實際」值上執行寫入作業。
當您指定 merge-schemes 限定元時,產生的 CoS 屬性可以兩種方式成為多值屬性:
若是間接或類別 CoS,目標項目中的限定符號屬性可以是多值。在此例中,每個值各會決定一個範本,且來自各個範本的該值是產生的值之一部分。
任何類型的多重 CoS 定義項目,可以在其 cosAttribute 中包含相同的屬性名稱。在此例中,如果所有定義包含 merge-schemes 限定元,產生的屬性會包含各個定義所運算的所有值。
這兩種情況可同時發生,並定義更多值。但是在所有情況下,重複的值僅會在產生的屬性中一次傳回。
如果沒有 merge-schemes 限定元,會使用範本項目的 cosPriority 屬性,為產生的屬性決定所有範本之間的單一值。此範例會在下一節中說明。
merge-schemes 限定元永遠不會合併在目標中以範本產生的值所定義之「實際」值。merge 限定元與 override 限定元無關。所有配對皆有可能,且可進行各配對的運作方式。此外,限定元可以在屬性名稱之後以任何順序指定。
同一屬性有多個 CoS 定義時,所有定義皆必須有相同的 override 與 merge 限定元。當 CoS 定義中有不同的成對之限定元時,會任意從所有定義選取其中一個組合。
若有多個 CoS 定義或多值限定符號,但沒有 merge-schemes 限定元,則目錄伺服器會使用優先權屬性選取單一範本,以定義運算屬性的單一值。
cosPriority 屬性表示特定範本在所考慮的所有範本之間的全域優先權。優先權零是最高優先權。沒有 cosPriority 屬性的範本會視為最低的優先權。當兩個以上的範本提供一個屬性值,但有相同的優先權或沒有優先權時,會隨意選擇值。
使用 merge-schemes 限定元時不會考量範本優先權。合併時,所有考量的範本會定義一個值,而不管範本定義的優先權。如下節中所述,會在 CoS 範本項目上定義 cosPriority 屬性。
cosPriority 屬性不得有負值。此外,間接 CoS 產生的屬性不支援優先權。請勿在間接 CoS 定義的範本項目中使用 cosPriority。