12.8. 目标规则的高级用法
通过组合多个关键字,您可以创建复杂的目标规则。本节提供了目标规则的高级用法示例。
12.8.1. 委派权限以创建和维护组 复制链接链接已复制到粘贴板!
在某些情况下,管理员希望将权限委派给其他帐户或组。通过将目标关键字结合在一起,您可以创建解决此请求的安全访问控制指令(ACI)。
例 12.6. 委派权限以创建和维护组
启用 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 用户:
-
可以创建必须包含
top和groupOfUniqueNames对象类的对象。 -
无法添加额外的对象类,如
account。例如,如果使用 Directory Server 帐户进行本地身份验证,这会防止为root用户创建新用户,如0。
targetfilter 规则可确保 ACI 条目只适用于 groupofuniquenames 对象类的条目,而 targetattrfilter 规则可确保无法添加其他对象类。
12.8.2. 以条目和属性为目标 复制链接链接已复制到粘贴板!
目标 根据可识别的名称(DN)控制访问。但是,如果您将其与通配符和 targetattr 关键字结合使用,您可以对条目和属性都为目标。
例 12.7. 以条目和属性为目标
启用 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");)
12.8.3. 针对与过滤器匹配的条目的某些属性 复制链接链接已复制到粘贴板!
如果您在两个目标规则中组合了 targetattr 和 targetfilter 关键字,您可以针对与过滤器匹配的条目的特定属性。
例 12.8. 针对与过滤器匹配的条目的某些属性
要允许 cn=Engineering Admins,dc=example,dc=com 组的成员修改 jpegPhoto 和 manager 属性,并将 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");)
12.8.4. 以单一目录条目为目标 复制链接链接已复制到粘贴板!
要针对单个目录条目为目标,请组合 targetattr 和 targetfilter 关键字。
例 12.9. 以单一目录条目为目标
启用 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 中没有将 ou =Engineering,dc=com 的子条目设置为 Engineering。
如果您的目录结构改变,这些 ACI 可能会失败。
另外,您可以创建一个与绑定请求中的用户输入匹配的绑定规则,以及一个存储在目标条目中的属性值。请参阅 根据与 匹配的值来定义访问权限。