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

从命令行管理角色

角色是在目录管理者可以通过命令行实用程序访问的条目中定义的。创建角色之后,可按以下方式为角色指定成员:

所有角色定义都是从 LDAPsubentrynsRoleDefinition 对象类继承来的。以下示例显示了特定于每类角色的其他对象类和关联属性。

受管理角色定义的示例

要为所有营销人员创建角色,请使用以下 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 对象类是从 LDAPsubentrynsRoleDefinitionnsSimpleRoleDefinition 对象类继承来的。

通过更新营销人员 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 对象类是从 LDAPsubentrynsRoleDefinition 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 对象类是从 LDAPsubentrynsRoleDefinitionnsComplexRoleDefinition 对象类继承来的。nsRoleDN 属性包含营销受管理角色和销售经理过滤角色的 DN。前面示例中的用户 Bob 和 Carla 都将成为此新嵌套角色的成员。

此过滤器的范围包括默认范围(该过滤器所在的子树),以及任何 nsRoleScopeDN 属性值下的子树。在本案例中,ManagerFilter 位于 ou=sales,ou=People,dc=example,dc=com 子树中。必须将此子树添加到该范围。