18.10. 定义权限

权限规则定义与 ACI 关联的权限,以及是否允许或拒绝访问。
在 ACI 中,以下突出显示的部分是权限规则:
(target_rule) (version 3.0; acl "ACL_name"; permission_rule bind_rules;)

语法

权限规则的一般语法是:
permission (rights)

例 18.11. 定义权限

要启用存储在 ou=People,dc=example,dc=com 条目中的用户,以搜索并显示其自身条目中的所有属性:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: ou=People,dc=example,dc=com
changetype: modify
add: aci
aci: (target = "ldap:///ou=People,dc=example,dc=com") (version 3.0;
 acl "Allow users to read and search attributes of own entry"; allow (search, read)
 (userdn = "ldap:///self");)

18.10.1. 用户权限

权限规则的权限定义了授予或拒绝的操作。在 ACI 中,您可以设置以下一个或多个权限:

表 18.1. 用户右边

right 描述
读取 设置用户是否可以读取目录数据。此权限只适用于 LDAP 中的搜索操作。
write 通过添加、修改或删除属性来设置用户是否可以修改条目。此权限适用于 LDAP 中的 modifymodrdn 操作。
add 设置用户可以创建条目。此权限只适用于 LDAP 中的 add 操作。
delete 设置用户是否可以删除条目。此权限只适用于 LDAP 中的 delete 操作。
search 设置用户可以搜索目录数据。要查看作为搜索结果的一部分返回的数据,分配 searchread 权限。此权限只适用于 LDAP 中的搜索操作。
compare 设置用户是否可以将其提供的数据与目录中存储的数据进行比较。通过 比较 权限,目录会返回成功或失败消息以响应查询,但用户无法看到 entry 或 属性的值。此权限仅适用于 LDAP 中的比较操作。
selfwrite 设置用户是否可以从组添加或删除自己的 DN。这个右边仅用于组管理。
proxy
设置指定的 DN 是否可以使用另一个条目的权限访问目标。代理右侧的代理 在 ACL 范围内被授予,作为正确授予的用户或组可以作为任何目录服务器用户运行命令。您不能将代理权限限制为某些用户。
为安全起见,设置 ACI,它在目录的最目标级别设置 proxy 权限。
all 设置除 代理外的所有权限

18.10.2. LDAP 操作所需的权限

本节介绍了您必须根据您要授权其执行的 LDAP 操作类型向用户授予权限。
  • 添加一个条目:
    • 授予对 要添加的 条目的添加权限。
    • 授予条目中每个属性值 的写入权限。默认情况下会授予此右边,但可使用 targattrfilters 关键字进行限制。
  • 删除条目:
    • 授予对 您要删除的 条目的删除权限。
    • 授予条目中每个属性值 的写入权限。默认情况下会授予此右边,但可使用 targattrfilters 关键字进行限制。
  • 修改条目中的属性:
    • 授予属性类型 的写入权限
    • 授予每个属性类型值 的写入权限。默认情况下会授予此右边,但可使用 targattrfilters 关键字进行限制。
  • 修改条目的 RDN:
    • 授予条目 的写入权限
    • 授予新 RDN 中使用的属性类型 的写入权限
    • 如果要授予删除旧 RDN 的权利,授予旧 RDN 中使用的属性类型 的写入权限
    • 授予新 RDN 中使用的属性值 的写入权限。默认情况下会授予此右边,但可使用 targattrfilters 关键字进行限制。
  • 比较属性值:
    • 授予属性类型 的比较 权限。
  • 搜索条目:
    • 授予搜索过滤器中使用的每个属性类型 的搜索 权限。
    • 授予对条目中使用的属性类型 的读取权限

18.10.3. 访问控制和 modrdn 操作

要使用 ACI 显式拒绝 modrdn 操作,请将相关条目为目标,但忽略 targetattr 关键字。例如,要添加一个 ACI 来定义 cn=example,ou=Groups,dc=example,dc=com 组,无法在 ou=body,dc=example,dc=com 中重命名包含 cn 属性的条目:
ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (target="ldap:///cn=*,ou=people,dc=example,dc=com")
 (version 3.0; acl "Deny modrdn rights to the example group";
 deny(write) groupdn="ldap:///cn=example,ou=groups,dc=example,dc=com";)