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>)
Copy to Clipboard Toggle word wrap

例如,搜索过滤器 (employeeNumber &gt;= 500) 具有 employeeNumber 作为属性,& gt;= 作为 operator,500 作为值。

具有匹配规则的搜索过滤器具有以下语法:

(<attribute>:<matching_rule>:=<value>)
Copy to Clipboard Toggle word wrap

例如,搜索过滤器 ( givenName:caseExactMatch:=Daniel) 将Name 指定为属性,caseExactMatch 作为匹配规则,Daniel 作为匹配规则。

您可以定义过滤器,将不同的属性与布尔值运算符结合使用。

10.3.1. 使用 LDAP 搜索过滤器中的属性

基本搜索查找条目中存在属性或特定值。搜索可以通过多种方式在条目中查找属性:

  • 检查属性是否存在(presence search)。存在的搜索使用星号(*)返回具有特定属性集的每个条目,无论值是什么。

    例如," (manager swig) " 过滤器返回具有 manager 属性的每个条目。

  • 匹配确切的属性值(匹配搜索)。相等搜索会查找具有特定值的属性。例如," (cn=example) " 过滤器返回包含通用名称(cn)的所有条目,设置为 example

    当属性具有与语言标签关联的值时,搜索会返回所有值。因此,以下两个属性值都与 " (cn=example) " 过滤器匹配:

    cn: example
    cn;lang-fr: example
    Copy to Clipboard Toggle word wrap
  • 列表与部分值匹配(字符串搜索)。例如," (sn swigerson) " 搜索过滤器返回以下值:

    sn: Derson
    sn: Anderson
    Copy to Clipboard Toggle word wrap

有关配置子字符串搜索长度的详情,请参阅 在子字符串索引中更改搜索密钥长度

10.3.2. 在 LDAP 搜索过滤器中使用 operator

LDAP 搜索过滤器中的 Operator 设置属性和给定搜索值之间的关系。在搜索人员时,您可以使用运算符设置范围,在字母或员工数字中以特定数字后的字母子集中返回姓氏。

(employeeNumber>=500)
(sn~=suret)
(salary<=150000)
Copy to Clipboard Toggle word wrap

当在国际化中包含 imperfect 信息或搜索时,您可以使用运算符进行电话和大约搜索,使搜索操作更加有效。

您可以在搜索过滤器中使用以下 Operator:

Expand
搜索类型操作符描述

相等

=

返回带有值与指定的值完全匹配的条目。例如,cn=example

子字符串

=string* string

返回在值中包含带有指定子字符串的属性的条目。例如,cn=exa*l。星号 (*) 表示零 (0) 或多个字符。

大于或等于

>=

返回包含大于或等于指定的值的属性的条目。例如: uidNumber>=5000

小于或等于

<=

返回包含值小于或等于指定的值的属性的条目。例如,uidNumber<=5000

存在

=*

返回包含指定属性的一个或多个值的条目。例如: cn swig

大约

~=

返回包含指定属性的条目,其值大约等于搜索过滤器中指定的值。例如,l~=san fransico 返回 l=san francisco

10.3.3. 使用复合 LDAP 搜索过滤器

您可以使用前缀表示法表达的布尔值运算符组合多个 LDAP 搜索过滤器组件,如下所示:

(<boolean-operator>(filter)(filter)(filter)...)
Copy to Clipboard Toggle word wrap

您可以使用以下布尔值操作符:

Expand
Operator符号描述

Ampersand (&)

所有指定的过滤器都必须为 true,语句才会为 true。例如,(& (filter) (filter) (filter)…​)

或者

竖线(|)

至少指定一个指定的过滤器,才能使语句为 true。例如,(|(filter) (filter) (filter)…​)

感叹号(!)

对于声明为 true,指定语句不能为 true。只有一个过滤器会受到 NOT operator 的影响。例如,(! (filter))

搜索操作按以下顺序评估布尔值表达式:

  • 首先,对外的父表达式进行内部内部。
  • 然后,服务器会更改顺序,以先尝试评估最严格的表达式。

当复合搜索过滤器被嵌套到已完成的表达式时,复合搜索过滤器最有用,例如:

(<boolean-operator>(filter)((<boolean-operator>(filter)(filter))))
Copy to Clipboard Toggle word wrap

您可以将复合过滤器与其他类型的搜索(大约、子字符串和其他运算符)相结合,以获得详细的结果。以下示例过滤器返回所有将机构单元(ou)作为 marketing 的条目,以及哪个 description 属性不包含子字符串 X.500

(&(ou=Marketing)(!(description=*X.500*)))
Copy to Clipboard Toggle word wrap

另外,您可以扩展过滤器,以返回 manager 设置为 exampledemo 的条目:

(&(ou=Marketing)(!(description=*X.500*))(|(manager=cn=example,ou=Marketing,dc=example,dc=com)(manager=cn=demo,ou=Marketing,dc=example,dc=com)))
Copy to Clipboard Toggle word wrap

以下示例过滤器返回不代表个人的所有条目:

(!(objectClass=person))
Copy to Clipboard Toggle word wrap

以下过滤器返回所有不代表个人的条目,哪些通用名称(cn)与 printer3b 类似:

(&(!(objectClass=person))(cn~=printer3b))
Copy to Clipboard Toggle word wrap

10.3.4. 在 LDAP 搜索过滤器中使用匹配规则

匹配规则指定目录服务器如何将属性中存储的值与搜索过滤器中的值进行比较。匹配规则与属性语法相关。当属性语法定义属性值的格式时,匹配规则定义了如何比较和索引该格式。匹配规则还定义了如何生成索引密钥。

匹配规则是具有对象标识符(OID)的 schema 元素。目录服务器中的所有属性都定义了匹配规则。有关匹配规则类型的更多信息,请参阅 匹配规则类型。通过在搜索过滤器中指定匹配规则,您可以使用与 schema 中属性定义的匹配规则搜索属性值。

具有可扩展匹配规则的过滤器具有以下语法:

(<attribute>:<matching_rule>:=<value>)
Copy to Clipboard Toggle word wrap

其中:

  • < attribute> 是一个属于您搜索的条目的属性,如 cnmailname
  • &lt ;matching_rule > 是一个字符串,其中包含您要用于根据所需语法匹配的规则的名称或 OID。例如,caseExactMatch 匹配规则。
  • <value > 是属性值或关系 Operator,加上要搜索的属性值。

匹配规则必须与您搜索的属性的语法兼容。您可以运行区分大小写的属性搜索,该属性定义了区分大小写的匹配规则。例如,name 属性在 schema 定义中具有预定义的 caseIgnoreMatch equality 匹配规则。使用过滤器 (name=Daniel) 的基本相等搜索会检索包含 名称 属性值(如 DAnieldaniel、Daniel )的条目。匹配规则过滤器的相等搜索 (name:caseExactMatch:=Daniel) 检索包含 Danielname 属性值的条目。

为目录服务器定义的许多匹配规则与语言代码相关,并设置国际化的协调顺序。例如,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 匹配规则指定了如何比较两个匹配值。例如,如何处理诸如 FredFRED 等字符串。更新操作使用 EQUALITY 规则来生成索引密钥。通过过滤器搜索操作,如 (name=Fred),使用 EQUALITY 规则将过滤器中的值与条目中的值进行比较。
排序
ORDERING 匹配规则指定如何比较两个值来确定一个值是否大于或等于另一个值。搜索过滤器,设置范围,如 (employeeNumber>=500)(attribute swigvalue),使用 ORDERING 规则。带有 ORDERING 规则的属性的索引会将相等值进行排序。
SUBSTR
SUBSTR 匹配规则指定如何比较子字符串值。子字符串搜索过滤器,如 (name vendored),使用 SUBSTR 规则。子字符串(sub)索引使用 SUBSTR 规则来生成索引密钥。

除了相等、排序和子字符串匹配规则外,您还可以在搜索过滤器中指定大约和其他可扩展匹配规则。

重要

目录需要匹配的规则,以支持搜索或索引对应的搜索过滤器或索引类型。例如,属性必须具有 EQUALITY 匹配规则,以支持对该属性的相等搜索过滤器和 eq 索引。属性必须具有 ORDERING 匹配规则和 EQUALITY 匹配规则,以支持范围搜索过滤器和索引范围搜索。

如果搜索操作对没有相应匹配规则的属性使用搜索过滤器,则目录服务器会拒绝带有 PROTOCOL_ERRORUNWILLING_TO_PERFORM 的搜索操作。

匹配规则和自定义属性

例如,您要创建一个带有 IA5 String (7-bit ASCII)语法的自定义属性 MyFirstName,并在 schema 定义中匹配 caseExactIA5Match 规则。带有过滤器 (MyFirstName=Fred) 的搜索会返回 MyFirstName 值仅等于 Fred 的条目;但是,FredFREDfred 都是有效的 IA5 字符串值。如果您希望搜索返回属性值的所有变体,您必须定义 MyFirstName 属性,以便在搜索过滤器中使用相等匹配的规则 caseIgnoreIA5Match 或明确指定匹配的规则 (MyFirstName:caseIgnoreIA5Match:=Fred)

10.3.4.2. 常用的匹配规则

以下是常用匹配规则的列表:

Expand
匹配规则描述对象标识符(OID)兼容语法

AND 匹配

执行位 AND 匹配。

1.2.840.113556.1.4.803

通常与 Integer 和数字字符串一起使用。目录服务器自动将数字字符串转换为整数。

OR 匹配

执行位 OR 匹配。

1.2.840.113556.1.4.804

通常与 Integer 和数字字符串一起使用。目录服务器自动将数字字符串转换为整数。

booleanMatch

评估要匹配的值是否为 TRUEFALSE

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. 语言排序匹配规则

对于国际搜索,您可以使用以下语言排序匹配规则:

Expand
匹配规则对象标识符(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. 语言子字符串匹配规则

对于国际搜索,您可以使用以下语言子字符串匹配规则:

Expand
匹配规则对象标识符(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

inchainMatch 匹配规则是搜索过滤器的可扩展匹配,用于在嵌套组中查找 LDAP 条目成员资格。目录服务器支持对象标识符(OID) 1.2.840.113556.1.4.1941chainMatch 中 人类可读的名称。

匹配规则的使用仅限于带有可辨识名称(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 组的所有直接或间接成员。

请注意,由于性能原因,您必须索引 成员managerparentOrganizationmemberof 属性,在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 具有使用 inchainMatch 匹配规则的权限,因为chainMatch 非常昂贵。要为其他用户授予权限,请修改 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 readsearch 权限到 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";)
    Copy to Clipboard Toggle word wrap
    注意

    要抓取多个用户的权限,请将这些用户添加到组中,并在 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
    Copy to Clipboard Toggle word wrap
10.3.4.5.2. 禁用 inchainMatch 匹配规则

要实现 inchainMatch 匹配规则,目录服务器使用默认启用的 In Chain 插件。如果要在 chainMatch 中禁用 In Chain 插件,请使用 dsconf 实用程序禁用 In Chain 插件。

流程

  1. 检查是否启用了 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
    ...
    Copy to Clipboard Toggle word wrap
  2. 禁用 In Chain 插件:

    # dsconf <instance_name> plugin set --enabled off 'In Chain'
    
    Successfully changed the cn=In Chain,cn=plugins,cn=config
    Copy to Clipboard Toggle word wrap

    命令可禁用所有用户的 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
    ...
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat