角色會在 Directory Administrator 可以透過指令行公用程式存取的項目中定義。建立角色之後,可以依下列方式指定成員給角色:
管理角色的成員在其項目中有 nsRoleDN 屬性。
篩選角色的成員為符合 nsRoleFilter 屬性中指定之篩選的項目。
巢式角色的成員為巢式角色定義項目的 nsRoleDN 屬性中所指定之角色成員。
所有角色定義繼承自 LDAPsubentry 與 nsRoleDefinition 物件類別。下列範例顯示各種角色類型特定的其他物件類別與相關屬性。
若要建立所有行銷人員的角色,請使用下列 ldapmodify 指令:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=Marketing,ou=marketing,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsSimpleRoleDefinition objectclass: nsManagedRoleDefinition cn: Marketing description: managed role for marketing staff |
請注意,nsManagedRoleDefinition 物件類別繼承自 LDAPsubentry、nsRoleDefinition 與 nsSimpleRoleDefinition 物件類別。
依下列方式更新名為 Bob 的行銷人員項目,以指定角色:
$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=Bob Arnold,ou=marketing,ou=People,dc=example,dc=com changetype: modify add: nsRoleDN nsRoleDN: cn=Marketing,ou=marketing,ou=People,dc=example,dc=com |
nsRoleDN 屬性表示項目為管理角色的成員。管理的角色由角色定義的 DN 所識別。若要讓使用者修改自己的 nsRoleDN 屬性,但不想讓使用者增加或移除 nsManagedDisabledRole,請增加下列 ACI:
aci: (targetattr="nsRoleDN")(targattrfilters="add=nsRoleDN: (!(nsRoleDN=cn=AdministratorRole,dc=example,dc=com)), del=nsRoleDN:(!(nsRoleDN=cn=nsManagedDisabledRole,dc=example, dc=com)") (version3.0;aci "allow mod of nsRoleDN by self except for critical values"; allow(write) userdn="ldap:///self";) |
若要設定行銷經理的篩選角色,且假設所有經理皆有 isManager 屬性,請使用下列 ldapmodify 指令:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=ManagerFilter,ou=sales,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: ManagerFilter nsRoleFilter: (isManager=True) Description: filtered role for sales managers |
請注意 nsFilteredRoleDefinition 物件類別繼承自 LDAPsubentry、nsRoleDefinition 與 nsComplexRoleDefinition 物件類別。nsRoleFilter 屬性會指定尋找 ou=sales 機構中有下屬的所有員工之篩選器,例如:
$ ldapsearch -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "ou=People,dc=example,dc=com" -s sub "(cn=*Fuentes)" dn: cn=Carla Fuentes,ou=sales,ou=People,dc=example,dc=comcn: Carla Fuentes isManager: TRUE... nsRole: cn=ManagerFilter,ou=sales,ou=People, dc=example,dc=com |
篩選角色的篩選字串可以根據任何屬性,CoS 機制產生的運算屬性除外。
當篩選的角色成員為使用者項目時,您可以選擇限制成員增加或移除角色成員的能力。使用 ACI 保護篩選的屬性。
位於巢式角色內的角色可使用 nsRoleDN 屬性加以指定。使用下列指令可建立包含上一個範例中所建立的行銷人員與行銷經理角色成員之角色:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=MarketingSales,ou=marketing,ou=People,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsNestedRoleDefinition cn: MarketingSales nsRoleDN: cn=ManagerFilter,ou=sales,ou=People,dc=example,dc=com nsRoleDN: cn=Marketing,ou=marketing,ou=People,dc=example,dc=com nsRoleScopeDN: ou=sales,ou=People,dc=example,dc=com |
請注意,nsNestedRoleDefinition 物件類別繼承自 LDAPsubentry、nsRoleDefinition 與 nsComplexRoleDefinition 物件類別。nsRoleDN 屬性包含行銷管理角色與行銷經理篩選角色的 DN。上一個範例中的兩個使用者 Bob 與 Carla 會是此新巢式角色的成員。
此篩選的範圍包含預設範圍 (篩選所在的子樹狀結構),以及任意 nsRoleScopeDN 屬性值以下的子樹狀結構。在此例中,ManagerFilter 位於 ou=sales,ou=People,dc=example,dc=com 子樹狀結構中。此子樹狀結構必須增加至範圍。