access
指定访问控制项。
access 在做访问控制操作的时候,主要涉及四个部分:
目标(what)
主体(who)
权限(
access)
控制(
control)
在访问控制语句中我们首先指定访问的目标,然后是三元的访问控制授权 组列表,每个访问控制授权组包括一个授权主体(who),一个权限定义(access, 在主体匹配上时分配)和一个控制执行匹配上后的动作策略(control)。
当评估特定条目的访问权时,服务器会检查与该条目和条目的属性相关的 所有访问控制语句。首先检查的是当前数据库的访问控制语句,然后是全局访 问控制语句。使用此优先级,依次检查出现在配置文件中访问控制语句。 Slapd 对访问控制语句的遍历,直到遇到第一个与访问目标(条目或属性) 匹配的<what> 选择器为止。在缺省情况下,相应的访问控制语句就是 slapd 用 来评估访问权限的语句。 下一步,slapd 把进行访问的主体与上面选定的访问控制语句中的<who> 选择器依出现的顺序进行比较。遇到第一个与主体匹配的<who> 选择器停止, 对应的三元组列表将决定主体对访问目标(条目或属性)的访问权限。 最后,slapd 把选定的<access> 字句中所授予的访问权限与客户所请求的 权限相比较,如果它允许相等的或更大的访问权限,则访问权限被授予,否则, 访问权限被拒绝。 <acl>:= access to <what> [by <who> <access> <control>]+ access to 是配置文件\命令行参数\必选的,仅允许出现一次; 〈what〉指定要对其访问权加以控制的目标,包括条目、属性或条目属性 的集合。目标可以是单个条目、子树、所有条目,也可以是一个或多 个指定 属性,或是一个 LDAP 过滤器。 [by <who> <access> <control>]是一个访问控制授权组,每个访问控制授 权组由授权主体(who)、权限(access)、控制(control)组成;授权主体至少出 现 1 次。 Who 指定访问控制的主体,也即通过目录服务器认证后的用户身份和相关 信息,实际上我们把它称为绑定规则更为恰当;它的授权对象,可以为匿名、 通过认证的用户、任何主体、组、登录主机的 IP 或 DNS、条目中的属性值对 应的 DN 等。 Access 指定授予主体的权限,权限包括拒绝、认证、比较、查询、读和写。 Control 指定本访问控制授权组执行完成后,去其它访问控制授权组的执行 策略,Control 可为 Stop、Continue 和 Break,缺省为 Stop。 下面是一个 ACL 举例:
access to dn=.*,dc=example,dc=com by * search
在本例中允许所有用户对 dc=example,dc=com 节点下的所有条目具有查 询的权限,但无读、写的权限。 由于访问控制语法的举例均是局部的,为了使我们的举例让用户能够更好 的进行实验,建议在例子的所有访问控制语句后加入下面的访问控制语句:
access to * by * write
若我们不加入该语句,LDAP Server 将缺省地在访问控制语句列表的最 后,加入: access to * by * none配置文件\命令行参数\文件参考 这样,将把在示例中所控制的访问目标之外的所有目标封锁起来,不允许 它人访问,但是至少要授予匿名用户(anonymous)认证(auth)权限。