1.8. 目标规则的高级使用

通过组合多个关键字,您可以创建复杂的目标规则。本节提供了目标规则的高级用法示例。

1.8.1. 委派权限以创建和维护组

在某些情况下,管理员希望将权限委派给其他帐户或组。通过组合目标关键字,您可以创建解决此请求的安全访问控制指令(ACI)。

例 1.7. 委派权限以创建和维护组

要启用 uid=user,ou=People,dc=example,dc=com" 帐户以在 ou=groups,dc=example,dc=com 条目中创建和更新组:

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: dc=example,dc=com
changetype: modify
add: aci
aci: (target = "ldap:///cn=*,ou=Groups,dc=example,dc=com")
 (targattrfilters="add=objectclass:(|(objectclas=top)(objectclass=groupOfUniqueNames)))
 (targetattr="cn || uniqueMember || objectClass")
 (version 3.0; acl "example"; allow (read, search, write, add)
 (userdn = "ldap:///uid=test,ou=People,dc=example,dc=com");)

为安全起见,前面的示例会添加某些限制。uid=test,ou=People,dc=example,dc=com 用户:

  • 可以创建必须包含 topgroupOfUniqueNames 对象类的对象。
  • 无法添加额外的对象类,如 account。例如,如果您使用 Directory 服务器帐户进行本地身份验证,这可以防止使用无效用户 ID 创建新用户,如 root 用户的 0

targetfilter 规则确保 ACI 条目只适用于包含 groupofuniquenames 对象类和 targetattrfilter 规则的条目,确保无法添加其他对象类。

1.8.2. 将条目和属性都作为目标

目标 根据可分辨的名称(DN)控制访问权限。但是,如果您将其与通配符和 targetattr 关键字结合使用,您可以同时处理条目和属性。

例 1.8. 将条目和属性都作为目标

要启用 uid=user,ou=People,dc=example,dc.com 用户,在 dc=example,dc=com 子树中读取和搜索所有组织单元中的组的成员:

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: dc=example,dc=com
changetype: modify
add: aci
aci: (target="ldap:///cn=*,dc=example,dc=com")(targetattr="member" || "cn") (version 3.0;
 acl "Allow uid=user to search and read members of groups";
 allow (read, search) (userdn = "ldap:///uid=user,ou=People,dc=example,dc.com");)

1.8.3. 针对与过滤器匹配的条目的特定属性

如果您在两个目标规则中组合 targetattrtargetfilter 关键字,您可以针对与过滤器匹配的条目的特定属性。

例 1.9. 针对与过滤器匹配的条目的特定属性

要允许 cn=Engineering Admins,dc=example,dc=com 组的成员修改 jpegPhotomanager 属性,并将 department 属性设置为 Engineering,请输入:

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "jpegPhoto || manager")
 (targetfilter = "(department=Engineering)") (version 3.0;
 acl "Allow engineering admins updating jpegPhoto and manager of department members";
 allow (write) (groupdn = "ldap:///cn=Engineering Admins,dc=example,dc.com");)

1.8.4. 以单一目录条目为目标

要针对单个目录条目,请组合 targetattrtargetfilter 关键字。

例 1.10. 以单一目录条目为目标

要启用 uid=user,ou=People,dc=example,dc=com 用户,以便在 ou=Engineering,dc=example,dc=com 条目中读取和搜索 ou=Engineering,dc=example,dc=com 条目:

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: ou=Engineering,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "ou || cn")
 (targetfilter = "(ou=Engineering)") (version 3.0;
 acl "Allow uid=user to search and read engineering attributes";
 allow (read, search) (userdn = "ldap:///uid=user,ou=People,dc=example,dc.com");)

要使前面的示例仅限制为目标,ou=Engineering,dc=example,dc=com 条目,ou=Engineering,dc=example,dc=com 中的 sub-entries in ou=Engineering,dc=com 不得将 ou =Engineering 设为 Engineering

重要

如果您的目录结构更改,这些类型的 ACI 可能会失败。

或者,您可以创建一个与绑定请求中用户输入匹配的绑定规则,以及存储在目标条目中的属性值。请参阅 根据值匹配,请参阅定义访问