You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止OpenLDAP匿名用户搜索mail=*但允许mail=*test*?

OpenLDAP访问控制:限制匿名用户的单星号邮件搜索

需求

阻止未认证的匿名用户执行单星号匹配的邮件搜索:

ldapsearch ... "mail=*"

但允许包含指定字符的邮件搜索(如带test的匹配):

ldapsearch ... "mail=*test*"

已尝试的无效ACL规则

dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to filter="(mail=*)"
  by dn.base="cn=admin,dc=example,dc=com" read
  by * none
olcAccess: {1}to * 
  by dn.base="cn=admin,dc=example,dc=com" write
  by * read

问题原因

原规则的to filter="(mail=*)"是针对条目过滤(匹配所有带有mail属性的条目),而非限制用户使用的搜索过滤器。同时,后续的to * by * read规则会覆盖前面对匿名用户的限制,导致单星号搜索依然被允许。

解决方案

通过在ACL中针对用户使用的搜索过滤器做限制,拒绝mail=*的搜索,允许其他合法搜索:

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
  by dn.base="cn=admin,dc=example,dc=com" write
olcAccess: {1}to *
  by * none filter="(mail=*)"
olcAccess: {2}to *
  by * read

规则说明

  1. 第一条规则:授予管理员对所有条目的写入权限。
  2. 第二条规则:当用户使用的搜索过滤器为(mail=*)时,拒绝所有非管理员用户的访问。
  3. 第三条规则:允许所有用户(包括匿名用户)读取其他所有内容,包括使用mail=*test*这类非单星号的邮件搜索。

验证方法

  • 匿名用户执行ldapsearch -x -b "dc=example,dc=com" "mail=*"会返回权限不足。
  • 匿名用户执行ldapsearch -x -b "dc=example,dc=com" "mail=*test*"能正常返回匹配条目。

内容的提问来源于stack exchange,提问作者VangDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:07:36