10.3. LDAP 搜索过滤器
搜索过滤器选择搜索操作返回的特定条目。您可以在 ldapsearch 命令行工具或 Directory Server web 控制台中使用搜索过滤器。
目录服务器根据条目存储对属性-值对搜索条目,而不基于这些条目的可分辨名称(DN)中使用的属性。例如,如果条目具有 DN uid=user_name,ou=People,dc=example,dc=com,则搜索 dc=example 仅在此条目中存在 attribute-value 对 dc:example 时匹配条目。
使用 ldapsearch 时,您可以在一个单独行中使用每个过滤器在文件中定义多个搜索过滤器。或者,您可以直接在命令行中指定搜索过滤器。
搜索过滤器有以下基本语法:
(<attribute><operator><value>)
例如,搜索过滤器 (employeeNumber >= 500) 具有 employeeNumber 作为属性,& gt;= 作为 operator,500 作为值。
具有匹配规则的搜索过滤器具有以下语法:
(<attribute>:<matching_rule>:=<value>)
例如,搜索过滤器 ( 将Name 指定为属性,givenName:caseExactMatch:=Daniel)caseExactMatch 作为匹配规则,Daniel 作为匹配规则。
您可以定义过滤器,将不同的属性与布尔值运算符结合使用。
10.3.1. 使用 LDAP 搜索过滤器中的属性 复制链接链接已复制到粘贴板!
基本搜索查找条目中存在属性或特定值。搜索可以通过多种方式在条目中查找属性:
检查属性是否存在(presence search)。存在的搜索使用星号(
*)返回具有特定属性集的每个条目,无论值是什么。例如,
" (manager swig) "过滤器返回具有manager属性的每个条目。匹配确切的属性值(匹配搜索)。相等搜索会查找具有特定值的属性。例如,
" (cn=example) "过滤器返回包含通用名称(cn)的所有条目,设置为example。当属性具有与语言标签关联的值时,搜索会返回所有值。因此,以下两个属性值都与
" (cn=example) "过滤器匹配:cn: example cn;lang-fr: example列表与部分值匹配(字符串搜索)。例如,
" (sn swigerson) "搜索过滤器返回以下值:sn: Derson sn: Anderson
有关配置子字符串搜索长度的详情,请参阅 在子字符串索引中更改搜索密钥长度。
10.3.2. 在 LDAP 搜索过滤器中使用 operator 复制链接链接已复制到粘贴板!
LDAP 搜索过滤器中的 Operator 设置属性和给定搜索值之间的关系。在搜索人员时,您可以使用运算符设置范围,在字母或员工数字中以特定数字后的字母子集中返回姓氏。
(employeeNumber>=500)
(sn~=suret)
(salary<=150000)
当在国际化中包含 imperfect 信息或搜索时,您可以使用运算符进行电话和大约搜索,使搜索操作更加有效。
您可以在搜索过滤器中使用以下 Operator:
| 搜索类型 | 操作符 | 描述 |
|---|---|---|
| 相等 | = |
返回带有值与指定的值完全匹配的条目。例如, |
| 子字符串 | =string* string |
返回在值中包含带有指定子字符串的属性的条目。例如, |
| 大于或等于 | >= |
返回包含大于或等于指定的值的属性的条目。例如: |
| 小于或等于 | <= |
返回包含值小于或等于指定的值的属性的条目。例如, |
| 存在 | =* |
返回包含指定属性的一个或多个值的条目。例如: |
| 大约 | ~= |
返回包含指定属性的条目,其值大约等于搜索过滤器中指定的值。例如, |
10.3.3. 使用复合 LDAP 搜索过滤器 复制链接链接已复制到粘贴板!
您可以使用前缀表示法表达的布尔值运算符组合多个 LDAP 搜索过滤器组件,如下所示:
(<boolean-operator>(filter)(filter)(filter)...)
您可以使用以下布尔值操作符:
| Operator | 符号 | 描述 |
|---|---|---|
| 和 | Ampersand (&) |
所有指定的过滤器都必须为 true,语句才会为 true。例如, |
| 或者 | 竖线(|) |
至少指定一个指定的过滤器,才能使语句为 true。例如, |
| 非 | 感叹号(!) |
对于声明为 true,指定语句不能为 true。只有一个过滤器会受到 NOT operator 的影响。例如, |
搜索操作按以下顺序评估布尔值表达式:
- 首先,对外的父表达式进行内部内部。
- 然后,服务器会更改顺序,以先尝试评估最严格的表达式。
当复合搜索过滤器被嵌套到已完成的表达式时,复合搜索过滤器最有用,例如:
(<boolean-operator>(filter)((<boolean-operator>(filter)(filter))))
您可以将复合过滤器与其他类型的搜索(大约、子字符串和其他运算符)相结合,以获得详细的结果。以下示例过滤器返回所有将机构单元(ou)作为 marketing 的条目,以及哪个 description 属性不包含子字符串 X.500 :
(&(ou=Marketing)(!(description=*X.500*)))
另外,您可以扩展过滤器,以返回 manager 设置为 example 或 demo 的条目:
(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=example,ou=Marketing,dc=example,dc=com)(manager=cn=demo,ou=Marketing,dc=example,dc=com)))
以下示例过滤器返回不代表个人的所有条目:
(!(objectClass=person))
以下过滤器返回所有不代表个人的条目,哪些通用名称(cn)与 printer3b 类似:
(&(!(objectClass=person))(cn~=printer3b))
10.3.4. 在 LDAP 搜索过滤器中使用匹配规则 复制链接链接已复制到粘贴板!
匹配规则指定目录服务器如何将属性中存储的值与搜索过滤器中的值进行比较。匹配规则与属性语法相关。当属性语法定义属性值的格式时,匹配规则定义了如何比较和索引该格式。匹配规则还定义了如何生成索引密钥。
匹配规则是具有对象标识符(OID)的 schema 元素。目录服务器中的所有属性都定义了匹配规则。有关匹配规则类型的更多信息,请参阅 匹配规则类型。通过在搜索过滤器中指定匹配规则,您可以使用与 schema 中属性定义的匹配规则搜索属性值。
具有可扩展匹配规则的过滤器具有以下语法:
(<attribute>:<matching_rule>:=<value>)
其中:
-
<attribute> 是一个属于您搜索的条目的属性,如cn、mail、name。 -
<
;matching_rule> 是一个字符串,其中包含您要用于根据所需语法匹配的规则的名称或 OID。例如,caseExactMatch匹配规则。 -
<value> 是属性值或关系 Operator,加上要搜索的属性值。
匹配规则必须与您搜索的属性的语法兼容。您可以运行区分大小写的属性搜索,该属性定义了区分大小写的匹配规则。例如,name 属性在 schema 定义中具有预定义的 caseIgnoreMatch equality 匹配规则。使用过滤器 (name=Daniel) 的基本相等搜索会检索包含 名称 属性值(如 DAniel、daniel、Daniel )的条目。匹配规则过滤器的相等搜索 (name:caseExactMatch:=Daniel) 检索包含 Daniel 的 name 属性值的条目。
为目录服务器定义的许多匹配规则与语言代码相关,并设置国际化的协调顺序。例如,OID 2.16.840.1.113730.3.3.2.17.1 标识 Finnish collation 顺序。有关支持的国际化顺序的完整列表,请参阅 语言排序匹配规则 和语言 子字符串匹配规则。
10.3.4.1. 匹配规则类型 复制链接链接已复制到粘贴板!
没有指定匹配规则的搜索过滤器,如(employeeNumber>=500)或(sn 3.3.0erson),使用其 schema 定义中属性语法定义的匹配规则。您可以为 schema 定义中的属性定义以下匹配规则:
- 相等
-
EQUALITY匹配规则指定了如何比较两个匹配值。例如,如何处理诸如Fred和FRED等字符串。更新操作使用EQUALITY规则来生成索引密钥。通过过滤器搜索操作,如(name=Fred),使用EQUALITY规则将过滤器中的值与条目中的值进行比较。 - 排序
-
ORDERING匹配规则指定如何比较两个值来确定一个值是否大于或等于另一个值。搜索过滤器,设置范围,如(employeeNumber>=500)或(attribute swigvalue),使用ORDERING规则。带有ORDERING规则的属性的索引会将相等值进行排序。 - SUBSTR
-
SUBSTR匹配规则指定如何比较子字符串值。子字符串搜索过滤器,如(name vendored),使用SUBSTR规则。子字符串(sub)索引使用SUBSTR规则来生成索引密钥。
除了相等、排序和子字符串匹配规则外,您还可以在搜索过滤器中指定大约和其他可扩展匹配规则。
目录需要匹配的规则,以支持搜索或索引对应的搜索过滤器或索引类型。例如,属性必须具有 EQUALITY 匹配规则,以支持对该属性的相等搜索过滤器和 eq 索引。属性必须具有 ORDERING 匹配规则和 EQUALITY 匹配规则,以支持范围搜索过滤器和索引范围搜索。
如果搜索操作对没有相应匹配规则的属性使用搜索过滤器,则目录服务器会拒绝带有 PROTOCOL_ERROR 或 UNWILLING_TO_PERFORM 的搜索操作。
匹配规则和自定义属性
例如,您要创建一个带有 IA5 String (7-bit ASCII)语法的自定义属性 MyFirstName,并在 schema 定义中匹配 caseExactIA5Match 规则。带有过滤器 (MyFirstName=Fred) 的搜索会返回 MyFirstName 值仅等于 Fred 的条目;但是,Fred、FRED 和 fred 都是有效的 IA5 字符串值。如果您希望搜索返回属性值的所有变体,您必须定义 MyFirstName 属性,以便在搜索过滤器中使用相等匹配的规则 caseIgnoreIA5Match 或明确指定匹配的规则 (MyFirstName:caseIgnoreIA5Match:=Fred)。
10.3.4.2. 常用的匹配规则 复制链接链接已复制到粘贴板!
以下是常用匹配规则的列表:
| 匹配规则 | 描述 | 对象标识符(OID) | 兼容语法 |
|---|---|---|---|
|
位 |
执行位 | 1.2.840.113556.1.4.803 |
通常与 |
|
位 |
执行位 | 1.2.840.113556.1.4.804 |
通常与 |
| booleanMatch |
评估要匹配的值是否为 | 2.5.13.13 | 布尔值 |
| caseExactIA5Match | 对值进行区分大小写的比较。 | 1.3.6.1.4.1.1466.109.114.1 | IA5 语法,URI |
| caseExactMatch | 对值进行区分大小写的比较。 | 2.5.13.5 | 目录字符串, 可打印字符串, OID |
| caseExactOrderingMatch | 允许区分大小写的搜索(不大于 和 )。 | 2.5.13.6 | 目录字符串, 可打印字符串, OID |
| caseExactSubstringsMatch | 执行区分大小写的子字符串和索引搜索。 | 2.5.13.7 | 目录字符串, 可打印字符串, OID |
| caseIgnoreIA5Match | 执行值的不区分大小写比较。 | 1.3.6.1.4.1.1466.109.114.2 | IA5 语法,URI |
| caseIgnoreIA5SubstringsMatch | 对子字符串和索引执行不区分大小写的搜索。 | 1.3.6.1.4.1.1466.109.114.3 | IA5 语法,URI |
| caseIgnoreListMatch | 执行值的不区分大小写比较。 | 2.5.13.11 | 邮寄地址 |
| caseIgnoreListSubstringsMatch | 对子字符串和索引执行不区分大小写的搜索。 | 2.5.13.12 | 邮寄地址 |
| caseIgnoreMatch | 执行值的不区分大小写比较。 | 2.5.13.2 | 目录字符串, 可打印字符串, OID |
| caseIgnoreOrderingMatch | 允许不区分大小写的搜索(不大于 和 )。 | 2.5.13.3 | 目录字符串, 可打印字符串, OID |
| caseIgnoreSubstringsMatch | 对子字符串和索引执行不区分大小写的搜索。 | 2.5.13.4 | 目录字符串, 可打印字符串, OID |
| distinguishedNameMatch | 比较可分辨名称值。 | 2.5.13.1 | 可区分名称(DN) |
| generalizedTimeMatch | 比较以 Generalized Time 格式的值。 | 2.5.13.27 | 常规时间 |
| generalizedTimeOrderingMatch | 允许对以 Generalized Time 格式的值进行范围搜索(不大于且大于)。 | 2.5.13.28 | 常规时间 |
| integerMatch | 评估整数值。 | 2.5.13.14 | 整数 |
| integerOrderingMatch | 在整数值中允许范围搜索(不大于且大于)。 | 2.5.13.15 | 整数 |
| keywordMatch | 将给定搜索值与属性值中的字符串进行比较。 | 2.5.13.33 | 目录字符串 |
| numericStringMatch | 比较更常规的数字值。 | 2.5.13.8 | 数字字符串 |
| numericStringOrderingMatch | 在更常规数字值上支持范围搜索(小于 和更高)。 | 2.5.13.9 | 数字字符串 |
| numericStringSubstringMatch | 比较更常规的数字值。 | 2.5.13.10 | 数字字符串 |
| objectIdentifierMatch | 比较对象标识符(OID)值。 | 2.5.13.0 | 对象标识符(OID) |
| octetStringMatch | 评估 octet 字符串值。 | 2.5.13.17 | octet String |
| octetStringOrderingMatch | 对一系列 octet 字符串值支持范围搜索(不大于且大于)。 | 2.5.13.18 | octet String |
| telephoneNumberMatch | 评估电话号码值。 | 2.5.13.20 | 电话号码 |
| telephoneNumberSubstringsMatch | 对电话号码值执行子字符串和索引搜索。 | 2.5.13.21 | 电话号码 |
| uniqueMemberMatch | 将 Name 和 Optional UID 语法的断言值与语法的属性值进行比较 | 2.5.13.23 | 名称和可选 UID |
| wordMatch | 将给定搜索值与属性值中的字符串进行比较。这种匹配规则不区分大小写。 | 2.5.13.32 | 目录字符串 |
10.3.4.3. 语言排序匹配规则 复制链接链接已复制到粘贴板!
对于国际搜索,您可以使用以下语言排序匹配规则:
| 匹配规则 | 对象标识符(OID) |
|---|---|
| English (Case Exact Ordering Match) | 2.16.840.1.113730.3.3.2.11.3 |
| Albanian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.44.1 |
| 阿拉伯语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.1.1 |
| Belorussian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.2.1 |
| Bulgarian (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.3.1 |
| Catalan (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.4.1 |
| 中文 - 简体式(区分大小写的顺序匹配) | 2.16.840.1.113730.3.3.2.49.1 |
| 中文 - 传统(问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.50.1 |
| Croatian (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.22.1 |
| 捷克(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.5.1 |
| Danish (区分大小写的顺序匹配) | 2.16.840.1.113730.3.3.2.6.1 |
| 荷兰语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.33.1 |
| 荷兰语 - Belgian (问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.34.1 |
| 英语 - 美国(问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.11.1 |
| 英语 - 加拿大(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.12.1 |
| 英语 - 意大利语(问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.14.1 |
| Estonian (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.16.1 |
| 芬兰(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.17.1 |
| 法语(不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.18.1 |
| 法语 - 比利语(区分大小写的顺序匹配) | 2.16.840.1.113730.3.3.2.19.1 |
| 法语 - 加拿大(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.20.1 |
| 法语 - Swiss (不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.21.1 |
| 德语(不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.7.1 |
| 德语 - Austrian (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.8.1 |
| 德语 - Swiss (问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.9.1 |
| Greek (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.10.1 |
| Hebrew (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.27.1 |
| Hungarian (问题单不区分大小写匹配) | 2.16.840.1.113730.3.3.2.23.1 |
| Icelandic (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.24.1 |
| 意大利语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.25.1 |
| 意大利语 - Swiss (不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.26.1 |
| 日语(用于敏感顺序匹配) | 2.16.840.1.113730.3.3.2.28.1 |
| 韩语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.29.1 |
| Latvian, Lettish (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.31.1 |
| Lithuanian (问题单不区分大小写匹配) | 2.16.840.1.113730.3.3.2.30.1 |
| Macedonian (问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.32.1 |
| Norwegian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.35.1 |
| Norwegian - Bokmul (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.36.1 |
| Norwegian - Nynorsk (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.37.1 |
| 波兰(问题单对顺序匹配) | 2.16.840.1.113730.3.3.2.38.1 |
| romanian (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.39.1 |
| 俄语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.40.1 |
| Serbian - Cyrillic (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.45.1 |
| Serbian - 拉丁语(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.41.1 |
| Slovak (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.42.1 |
| Slovenian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.43.1 |
| 西班牙语(用于敏感顺序匹配) | 2.16.840.1.113730.3.3.2.15.1 |
| 瑞典(问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.46.1 |
| Turkish (问题单不区分大小写的匹配) | 2.16.840.1.113730.3.3.2.47.1 |
| Ukrainian (Case Insensitive Ordering Match) | 2.16.840.1.113730.3.3.2.48.1 |
10.3.4.4. 语言子字符串匹配规则 复制链接链接已复制到粘贴板!
对于国际搜索,您可以使用以下语言子字符串匹配规则:
| 匹配规则 | 对象标识符(OID) |
|---|---|
| English (Case Exact Substring Match) | 2.16.840.1.113730.3.3.2.11.3.6 |
| Albanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.44.1.6 |
| 阿拉伯语(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.1.1.6 |
| Belorussian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.2.1.6 |
| Bulgarian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.3.1.6 |
| Catalan (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.4.1.6 |
| 中文 - 简体式(区分大小写的子字符串匹配) | 2.16.840.1.113730.3.3.2.49.1.6 |
| 中文 - 传统(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.50.1.6 |
| Croatian (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.22.1.6 |
| Czech (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.5.1.6 |
| Danish (问题单在敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.6.1.6 |
| 荷兰语(问题单在敏感的子字符串匹配中) | 2.16.840.1.113730.3.3.2.33.1.6 |
| 荷兰语 - Belgian (问题单在敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.34.1.6 |
| English - US (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.11.1.6 |
| 英语 - 加拿大(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.12.1.6 |
| English - Irish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.14.1.6 |
| Estonian (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.16.1.6 |
| 芬兰(问题单不区分大小写的子字符串匹配) | 2.16.840.1.113730.3.3.2.17.1.6 |
| 法语(不区分大小写的子字符串匹配) | 2.16.840.1.113730.3.3.2.18.1.6 |
| 法语 - Belgian (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.19.1.6 |
| 法语 - 加拿大(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.20.1.6 |
| 法语 - Swiss (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.21.1.6 |
| 德语(问题单对敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.7.1.6 |
| 德语 - Austrian (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.8.1.6 |
| 德语 - Swiss (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.9.1.6 |
| Greek (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.10.1.6 |
| Hebrew (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.27.1.6 |
| Hungarian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.23.1.6 |
| Icelandic (问题单在敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.24.1.6 |
| 意大利语(问题单对敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.25.1.6 |
| 意大利语 - Swiss (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.26.1.6 |
| 日语(不区分大小写的子字符串匹配) | 2.16.840.1.113730.3.3.2.28.1.6 |
| 韩语(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.29.1.6 |
| Latvian, Lettish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.31.1.6 |
| Lithuanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.30.1.6 |
| Macedonian (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.32.1.6 |
| Norwegian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.35.1.6 |
| Norwegian - Bokmul (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.36.1.6 |
| Norwegian - Nynorsk (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.37.1.6 |
| 波兰(问题单在敏感的子字符串匹配) | 2.16.840.1.113730.3.3.2.38.1.6 |
| romanian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.39.1.6 |
| 俄语(问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.40.1.6 |
| Serbian - Cyrillic (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.45.1.6 |
| Serbian - 拉丁语(问题单不区分大小写的子字符串匹配) | 2.16.840.1.113730.3.3.2.41.1.6 |
| Slovak (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.42.1.6 |
| Slovenian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.43.1.6 |
| 西班牙语(在敏感的子字符串匹配中) | 2.16.840.1.113730.3.3.2.15.1.6 |
| Swedish (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.46.1.6 |
| Turkish (问题单对子字符串匹配) | 2.16.840.1.113730.3.3.2.47.1.6 |
| Ukrainian (Case Insensitive Substring Match) | 2.16.840.1.113730.3.3.2.48.1.6 |
10.3.4.5. 使用 inchainMatch 匹配规则在嵌套组中查找 LDAP 条目成员资格 复制链接链接已复制到粘贴板!
inchainMatch 匹配规则是搜索过滤器的可扩展匹配,用于在嵌套组中查找 LDAP 条目成员资格。目录服务器支持对象标识符(OID) 1.2.840.113556.1.4.1941 和 chainMatch 中 人类可读的名称。
匹配规则的使用仅限于带有可辨识名称(DN)语法的属性。您可以使用 inchainMatch 匹配规则执行以下搜索:
-
搜索过滤器
(成员:1.2.840.113556.1.4.1941:=uid=jdoe,ou=body,dc=example,dc=com)找到用户jdoe是成员的所有直接或间接组。 -
搜索过滤器
(manager:1.2.840.113556.1.4.1941:=uid=jsmith,ou=people,dc=example,dc=com)找到所有管理器是jsmith的直接或间接用户。 -
搜索过滤器
(parentOrganization:1.2.840.113556.1.4.1941:=ou=ExampleCom,ou=europe,dc=example,dc=com)找到ExampleCom所属的所有直接或间接机构。 -
搜索过滤器
(:1.2.840.113556.1.4.1941:=cn= marketing ,ou=groups,dc=example,dc=com)找到 marketing 组的所有直接或间接成员。
请注意,由于性能原因,您必须索引 成员、manager、parentOrganization、memberof 属性,在chainMatch 中使用。
目录服务器默认通过 In Chain 插件启用 inchainMatch 匹配规则。但是,在chainMatch 中 对于 compute 非常昂贵,只有 Directory Manager 默认具有在 chainMatch 中使用 的权限。要为其他用户授予权限,请修改 oid=1.2.840.113556.1.4.1941,cn=features,cn=config 条目中的访问控制指令(ACI)。如需了解更多详细信息,请参阅为用户条目启用 inchainMatch 匹配规则。
10.3.4.5.1. 为用户条目启用 chainMatch 匹配规则 复制链接链接已复制到粘贴板!
默认情况下,只有 Directory Manager 具有使用 匹配规则的权限,因为chainMatch 非常昂贵。要为其他用户授予权限,请修改 inchainMatch oid=1.2.840.113556.1.4.1941,cn=features,cn=config 条目中的访问控制指令(ACI)。以下流程为 admin 用户授予 读取和 搜索 权限。
先决条件
-
uid=admin,ou=people,dc=example,dc=com用户条目存在。 -
uid=jdoe,ou=people,dc=example,dc=com用户条目存在,并属于cn=Marketing_Germany,ou=groups,dc=example,dc=com组。 -
cn=Marketing_Germany,ou=groups,dc=example,dc=com组是cn=Marketing_EU,ou=groups,dc=example,dc=com组的嵌套组。
流程
Grand
read和search权限到uid=admin,ou=people,dc=example,dc=com,方法是替换oid=1.2.840.113556.1.4.1941,cn=features,cn=config条目中的默认 ACI:# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: oid=1.2.840.113556.1.4.1941,cn=features,cn=config changetype: modify replace: aci aci: (targetattr != "aci")(version 3.0; acl "InChain Matching Rule"; allow( read, search ) userdn = "ldap:///uid=admin,ou=people,dc=example,dc=com";)注意要抓取多个用户的权限,请将这些用户添加到组中,并在 ACI 的绑定规则中将
groupdn设置为关键字。如需了解更多详细信息,请参阅 定义基于组的访问。
验证
搜索用户
uid=jdoe,ou=people,dc=example,dc=com属于admin用户的组:$ ldapsearch -D "uid=admin,ou=people,dc=example,dc=com" -H ldap://server.example.com -W -xLL -b "dc=example,dc=com" "(member:1.2.840.113556.1.4.1941:=uid=jdoe,ou=people,dc=example,dc=com)" dn dn: cn=Marketing_EU,ou=groups,dc=example,dc=com dn: cn=Marketing_Germany,ou=groups,dc=example,dc=com
10.3.4.5.2. 禁用 inchainMatch 匹配规则 复制链接链接已复制到粘贴板!
要实现 inchainMatch 匹配规则,目录服务器使用默认启用的 In Chain 插件。如果要在 chainMatch 中禁用 插件,请使用 In Chaindsconf 实用程序禁用 In Chain 插件。
流程
检查是否启用了
In Chain插件:# dsconf <instance_name> plugin show 'In Chain' dn: cn=In Chain,cn=plugins,cn=config cn: In Chain nsslapd-pluginDescription: inchain matching rule plugin nsslapd-pluginEnabled: on ...禁用
In Chain插件:# dsconf <instance_name> plugin set --enabled off 'In Chain' Successfully changed the cn=In Chain,cn=plugins,cn=config命令可禁用所有用户的
inchainMatch匹配规则。
验证
检查 Directory Server 是否禁用了
In Chain插件:# dsconf <instance_name> plugin show 'In Chain' dn: cn=In Chain,cn=plugins,cn=config cn: In Chain nsslapd-pluginDescription: inchain matching rule plugin nsslapd-pluginEnabled: off ...