使用指標 CoS 或類別 CoS 時,範本項目會包含 LDAPsubentry 與 cosTemplate 物件類別。必須特別針對 CoS 定義建立此項目。使 CoS 範本項目成為 LDAPsubentry 物件類別的實例,即可允許執行一般搜尋,而不受配置項目的阻礙。
間接 CoS 機制的範本為目錄中任意的現有項目。目標不需要提前識別或提供 LDAPsubentry 物件類別,但是目標必須有輔助 cosTemplate 物件類別。只有在 CoS 評估為產生運算屬性與其值時,才需存取間接 CoS 範本。
在所有情況下,CoS 範本項目必須包含目標項目上 CoS 所產生的屬性與值。屬性名稱指定於 CoS 定義項目的 cosAttribute 屬性中。
下列範例顯示產生 postalCode 屬性的指標 CoS 最高優先權之範本項目:
dn: cn=ZipTemplate,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: extensibleobject objectclass: cosTemplate postalCode: 95054 cosPriority: 0 |
下節提供範本項目範例,以及各種 CoS 定義項目類型的範例。
下列指令會建立具有 cosPointerDefinition 物件類別的指標 CoS 定義項目。此定義項目使用上節範例中陳述的 CoS 範本項目,以在 ou=People,dc=example,dc=com 樹狀結構的所有項目之間共用郵遞區號。
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=pointerCoS,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosPointerDefinition cosTemplateDn: cn=ZipTemplate,ou=People,dc=example,dc=com cosAttribute: postalCode |
CoS 範本項目 (cn=ZipTemplate,ou=People,dc=example,dc=com) 會提供儲存在其 postalCode 屬性中的值,給所有位於 ou=People,dc=example,dc=com 尾碼下的項目。如果搜尋相同子樹狀結構中沒有郵遞區號的任何項目,則會看到產生的屬性值:
$ ldapsearch -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)" dn: cn=Babs Jensen,ou=People,dc=example,dc=com cn: Babs Jensen ... postalCode: 95054 |
間接 CoS 可命名 cosIndirectSpecifier 屬性中的屬性,可找出每個目標特有的範本。間接 CoS 的範本項目可以是目錄中的任何項目,包含其他使用者項目。此間接 CoS 範例使用目標項目的 manager 屬性識別 CoS 範本項目。範本項目是經理的使用者項目。經理的使用者項目包含要產生的屬性值。在此案例中為 departmentNumber 的值。
下列指令建立包含 cosIndirectDefinition 物件類別的間接 CoS 定義項目:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=generateDeptNum,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosIndirectDefinition cosIndirectSpecifier: manager cosAttribute: departmentNumber |
接著,將 cosTemplate 物件類別增加至範本項目中,並確定這些項目會定義要產生的屬性。在此範例中,所有經理項目皆為範本:
$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=Carla Fuentes,ou=People,dc=example,dc=com changetype: modify add: objectclass objectclass: cosTemplate - add: departmentNumber departmentNumber: 318842 |
在此 CoS 中,包含 manager 屬性的目標項目 (ou=People,dc=example,dc=com 下的項目) 自動會有其經理的部門號碼。由於伺服器沒有 departmentNumber 屬性,因此會在目標項目上運算該屬性。但是,departmentNumber 屬性會以目標項目的一部分傳回。例如,如果 Babs Jensen 的經理定義為 Carla Fuentes,其部門號碼如下所示:
$ ldapsearch -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)" dn: cn=Babs Jensen,ou=People,dc=example,dc=com cn: Babs Jensen ... manager: cn=Carla Fuentes,ou=People,dc=example,dc=com departmentNumber: 318842 |
此範例說明如何使用類別 CoS 產生郵寄地址。產生的值會在範本項目中指定,此範本項目由 CoS 定義中的 cosTemplateDN 與目標項目中的 cosSpecifier 屬性值之組合所找到。下列指令使用 cosClassicDefinition 物件類別建立定義項目:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=classicCoS,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: cosSuperDefinition objectclass: cosClassicDefinition cosTemplateDn: ou=People,dc=example,dc=com cosSpecifier: building cosAttribute: postalAddress |
使用相同的指令,建立提供每棟大樓的郵寄地址之範本項目:
dn: cn=B07,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: extensibleobject objectclass: cosTemplate postalAddres: 7 Old Oak Street, Anytown, CA 95054 |
在此 CoS 中,包含 building 屬性的目標項目 (ou=People,dc=example,dc=com 下的項目) 自動會有對應的郵寄地址。CoS 機制會搜尋其 RDN 中有限定符號屬性值的範本項目。在此範例中,如果 Babs Jensen 指定給大樓 B07,會產生如下的郵寄地址:
$ ldapsearch -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "ou=People,dc=example,dc=com" -s sub "(cn=*Jensen)" dn: cn=Babs Jensen,ou=People,dc=example,dc=com cn: Babs Jensen ... building: B07 postalAddress: 7 Old Oak Street, Anytown, CA 95054 |