2.4. [$dn] 宏示例
[$dn]
宏检查目标源的 DN 多次。这个宏会丢弃每个迭代最多的 RDN 组件,直到找到匹配项。
例如,您在 cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com
子树中使用目标的 LDAP 请求:
aci: (target="ldap:///ou=groups,($dn),dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
aci: (target="ldap:///ou=groups,($dn),dc=example,dc=com")
(targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
宏展开,如下所示:
-
目标中的
($dn)
与dc=subdomain1,dc=hostedCompany1
匹配。 主体中的
[$dn]
的替换为dc=subdomain1,dc=hostedCompany1
。结果为
groupdn="ldap:///cn=domainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com"
。如果绑定 DN 是该组的成员,则匹配的进程会停止,并且评估 ACI。如果结果不匹配,该过程将继续并丢弃最左边的部分。主题中的 [$dn] 是
dc=hostedCompany1
。结果为
groupdn="ldap:///cn=domainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com"
。如果绑定 DN 不是该组的成员,则不会评估 ACI。如果是一个成员,则评估 ACI。
[$dn]
宏将对域级别管理员的访问权限授予目录树中的所有子域。它可用于表达域之间的分层关系。例如,请考虑以下 ACI:
aci: (target="ldap:///ou=*, ($dn),dc=example,dc=com") (targetattr="*")(targetfilter=(objectClass=nsManagedDomain)) (version 3.0; acl "Domain access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
aci: (target="ldap:///ou=*, ($dn),dc=example,dc=com")
(targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
(version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
此 ACI 将 cn=domainAdmins,ou=groups,dc=hostedCompany1,dc=example,dc=com
的访问权限授予 dc=hostedCompany1
下的所有子域。属于该组成员的管理员可以访问 ou=body,dc=subdomain1.1,dc=subdomain1
等子树。但是 cn=domainAdmins,ou=groups,dc=subdomain1.1
的成员无法访问 ou=body,dc=hostedCompany1
和 ou=body,dc=subdomain1,dc=hostedCompany1
节点。