2.3. 使用命令行管理目录服务器中的角色


您可以使用命令行查看、创建和删除角色。

2.3.1. 在目录服务器中创建受管角色

受管角色是具有明确枚举的成员列表的角色。您可以使用 ldapmodify 实用程序创建受管角色。以下示例为市场营销团队创建了一个受管角色。

先决条件

  • Directory Server 中存在 ou=people,dc=example,dc=com 父条目。
  • Directory Server 中存在 cn=Bob Jones,ou=people,dc=example,dc=com 用户条目。

流程

  1. 使用带有 -a 选项的 ldapmodify 命令创建 cn=Marketing managed role 条目:

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Marketing,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsSimpleRoleDefinition
    objectclass: nsManagedRoleDefinition
    cn: Marketing
    description: managed role for the marketing team
    EOF
    Copy to Clipboard Toggle word wrap

    managed role 条目必须包含以下对象类:

    • LDAPsubentry
    • nsRoleDefinition
    • nsSimpleRoleDefinition
    • nsManagedRoleDefinition
  2. 通过将 nsRoleDN 属性添加到这个用户条目,将 cn=Marketing,ou=people,dc=example,dc=com managed role 分配给 cn=Bob Jones,ou=people,dc=example,dc=com 用户条目:

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    changetype: modify
    add: nsRoleDN
    nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
    EOF
    
    modifying entry "cn=Bob Jones,ou=people,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  3. 可选:为 userRoot 数据库中 nsRoleDN 属性配置等号索引,以避免未索引的搜索:

    #  dsconf -D "cn=Directory Manager" ldap://server.example.com backend index add --index-type eq --attr nsroleDN --reindex userRoot
    Copy to Clipboard Toggle word wrap

验证

  • 列出现在属于 cn=Marketing,ou=people,dc=example,dc=com 受管角色的用户条目:

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=Marketing,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    
    dn: cn=Tom Devis,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

2.3.2. 在目录服务器中创建过滤的角色

如果条目在角色中定义了特定的属性,则目录服务器将条目分配给过滤的角色。角色定义指定 nsRoleFilter LDAP 过滤器。与过滤器匹配的条目是角色的成员。

您可以使用 ldapmodify 工具创建过滤的角色。以下示例为销售部门经理创建过滤的角色。

先决条件

  • Directory Server 中存在 ou=people,dc=example,dc=com 父条目。

流程

  1. 使用带有 -a 选项的 ldapmodify 命令创建 cn=SalesManagerFilter 过滤角色条目:

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=SalesManagerFilter,ou=people,dc=example,dc=com
    changetype: add
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsFilteredRoleDefinition
    cn: SalesManagerFilter
    nsRoleFilter: o=sales managers
    Description: filtered role for sales managers
    EOF
    Copy to Clipboard Toggle word wrap

    cn=SalesManagerFilter 过滤的角色条目具有角色的 o=Sales managers 过滤器。具有 o 属性且值为 Sales managers 的所有 用户条目都是过滤角色的成员。

    现在过滤角色成员的用户条目示例:

    dn: cn=Pat Smith,ou=people,dc=example,dc=com
    objectclass: person
    cn: Pat
    sn: Smith
    userPassword: password
    o: sales managers
    Copy to Clipboard Toggle word wrap

    过滤的角色条目必须具有以下对象类:

    • LDAPsubentry
    • nsRoleDefinition
    • nsComplexRoleDefinition
    • nsFilteredRoleDefinition
  2. 可选:为 nsRoleFilter 角色过滤器中使用的属性配置 相等 索引,以避免未索引的搜索。在给定示例中,该角色使用 o=sales managers 作为过滤器。因此,索引 o 属性以提高搜索性能:

    #  dsconf -D "cn=Directory Manager" ldap://server.example.com backend index add --index-type eq --attr o --reindex userRoot
    Copy to Clipboard Toggle word wrap

验证

  • 列出现在属于 cn=SalesManagerFilter,ou=people,dc=example,dc=com 过滤的用户条目:

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=SalesManagerFilter,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Jess Mor,ou=people,dc=example,dc=com
    
    dn: cn=Pat Smith,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

2.3.3. 在目录服务器中创建嵌套角色

嵌套角色可以包含受管和过滤的角色。嵌套角色条目需要 nsRoleDN 属性来识别要嵌套的角色。

您可以使用 ldapmodify 实用程序创建嵌套角色。以下示例创建嵌套角色,其中包含您在 Directory Server 中创建受管角色和过滤的角色,并在 Directory Server 中创建过滤的角色

先决条件

  • Directory Server 中存在 ou=people,dc=example,dc=com 父条目。

流程

  1. 使用带有 -a 选项的 ldapmodify 命令,创建 cn=MarketingSales 嵌套角色条目,其中包含 cn=SalesManagerFilter 过滤角色和 cn=Marketing 受管角色:

    # ldapmodify -a -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=MarketingSales,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsNestedRoleDefinition
    cn: MarketingSales
    nsRoleDN: cn=SalesManagerFilter,ou=people,dc=example,dc=com
    nsRoleDN: cn=Marketing,ou=people,dc=example,dc=com
    EOF
    Copy to Clipboard Toggle word wrap

    (可选)角色可以具有 description 属性。

    嵌套角色条目必须具有以下对象类:

    • LDAPsubentry
    • nsRoleDefinition
    • nsComplexRoleDefinition
    • nsNestedRoleDefinition

验证

  • 列出现在属于 cn=MarketingSales 嵌套角色的用户条目:

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b "dc=example,dc=com" "(nsRole=cn=MarketingSales,ou=people,dc=example,dc=com)" dn 
    
    dn: cn=Bob Jones,ou=people,dc=example,dc=com
    dn: cn=Pat Smith,ou=people,dc=example,dc=com
    dn: cn=Jess Mor,ou=people,dc=example,dc=com
    dn: cn=Tom Devis,ou=people,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

2.3.4. 查看条目的角色

要查看条目的角色,请使用带有明确指定的 nsRole 虚拟属性的 ldapsearch 命令。

先决条件

  • 角色条目存在。
  • 将角色分配给 uid=user_name 用户条目。

流程

  • 使用指定的 nsRole 虚拟属性搜索 uid=user_name 条目:

    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -b "dc=example,dc=com" -s sub -x "(uid=user_name)" nsRole
    
    dn: uid=user_name,ou=people,dc=example,dc=com
    ...
    nsRole: cn=Role for Managers,dc=example,dc=com
    nsRole: cn=Role for Accounting,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

    命令检索 uid=user_name 用户所属的所有角色。

2.3.5. 删除目录服务器中的角色

要删除目录服务器中的角色,您可以使用 ldapmodify 命令。

以下是从 Directory Server 中删除 cn=Marketing managed 角色的示例。

流程

  • 要删除 cn=Marketing managed role 条目,请输入:

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x << EOF
    dn: cn=Marketing,ou=People,dc=example,dc=com
    changetype: delete
    EOF
    
    deleting entry "cn=Marketing,ou=People,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
    注意

    当您删除角色时,Directory 服务器只删除角色条目,且不会删除每个角色成员的 nsRoleDN 属性。要删除每个角色成员的 nsRoleDN 属性,请启用 referential Integrity 插件并配置此插件来管理 nsRoleDN 属性。

    有关引用完整性插件的更多信息,请参阅使用引用完整性来维护条目之间的关系

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat