LDAP基础功能(重点为搜索:ldapsearch)

简介:

一、基本操作

    

连接 连接操作作用于应用程序与LDAP服务器之间的连接和断开。
查询 查询操作通常指的是搜索search和比较compare。也就是利用属性值查找相应条目。
更改 包括add/delete/modify/modifyDN


二、搜索参数

    (这里只介绍一下搜索参数的搜索层次,为下文做铺垫)

base 表示把基准DN作为搜索对象。例如:cn=yanzong,ou=Ops,dc=shuyun,dc=com 的基准DN是dc=shuyun,dc=com
one 表示把基准DN的第一层作为搜索对象,如上个例子中的ou=Ops为搜索对象。
sub 表示把基准DN及以下的整棵树都作为搜索对象。


三、ldapsearch 参数表


参数
用途
-a deref 指定别名反向引用。请输入 never、always、search 或 find。如果不使用此参数,缺省为 never。
-A 只检索属性的名称,而不检索属性的值。
-b base dn 指定用作搜索起始点的专有名称。使用引号来指定该值,如:"ou=Ops,dc=shuyun,dc=com".如果要搜索的服务器需要指定搜索起点,则必须使用此参数。否则此参数是可选的。也可以同时使用 -b 和 -s 来确定搜索范围。没有 –s,-b 就会搜索指定为起始点的项以及该项的所有子项。
-B 允许打印非 ASCII 值
-D bind dn 指定服务器用于验证您的专有名称。名称必须与目录中的项相符,并且必须拥有搜索目录所需的权限。请使用引号来指定该名称,例如:"cn=Manager,dc=shuyun,dc=com"。如果不使用此参数,则与服务器的连接是匿名的。如果服务器不允许匿名连接,则必须使用 -D。除了 -D,还必须使用 -w 参数来指定与专有名称相关联的口令。
-f file 指定包含要使用的搜索过滤器的文件,如 -f 过滤器。请将每个搜索过滤器置于单独的一行。Ldapsearch 会对每一行执行一次搜索。可选择指定过滤模式。例如,指定 -f 过滤 "cn=%s",并在文件的每一行中输入公用名称的值。
-F sep 在属性名称和值之间打印 sep 而不是等号 (=)。例如,如果读取 ldapsearch 输出的工具希望使用其他的分隔符时,可以使用此参数。
-h host name 指定要连接的服务器主机名,如 -h ldap.shuyun.com。
-l timelimit 指定完成搜索的时间限制(秒)。如果没有指定此参数或指定的限制为 0,那么搜索就没有时间限制。但是,ldapsearch 的等待时间决不会超过服务器上设置的搜索时间限制。

-L 指定以 LDIF 格式输出。LDIF 格式使用冒号 (:) 而不是等号 (=) 作为属性描述符。LDIF 对一次性添加或修改大量目录项很有帮助。例如,可以将输出内容引入兼容 LDAP 的目录中。
-M 将参考对象作为普通项进行管理,以使 ldapsearch 可返回参考项本身的属性,而不是所参考的项的属性。
-n 显示如何执行搜索,但不实际执行搜索
-p port 指定服务器使用的端口。如果没有使用此参数,缺省情况下 ldapsearch 使用 389 端口。
-R 不自动遵循服务器返回的搜索引用。请注意,Netscape 目录服务器将术语 referrals 用于搜索引用。
-s scope 指定使用 -b 参数时的搜索范围:

base -- 仅搜索 -b 参数指定的项

onelevel -- 仅搜索 -b 参数指定项的直接子项,而不搜索该项本身

subtree -- 搜索 -b 参数指定的项以及它的所有子项。这是不带 -s 时使用 -b 的缺省行为。

指定 -b 和 -s 的顺序并不重要。

-S attribute 按指定的属性排序结果。
-z sizelimit 指定返回项的最大数目。如果没有指定此参数或指定的限制为 0,那么返回的项没有数量限制。但是,ldapsearch 返回的项决不会多于服务器允许的数量。
-u 指定 ldapsearch 以用户友好格式返回专有名称。
-v 指定 ldapsearch 以详尽模式运行。

-w password 指定与 -D 参数一起使用的与专有名称关联的口令。
x 与 -S 一起使用时可指定 LDAP 服务器在将结果返回之前就对它们进行排序。如果使用 -S 而不使用 –x,ldapsearch 将对结果排序。

四、匹配语法

运算符 用途 例子

查找所包含的属性值与指定值相同的项 

"cn=yanzong"

>= 查找特定项,该项中包含的属性的数字或字母值大于或等于指定的值。 "cn>=D"
<= 查找特定项,该项中包含的属性的数字或字母值小于或等于指定的值。 "roomNumber<=300"
=* 查找包含特定属性的值的项,而不用管属性的值是什么。 "sn=*"
~= 查找特定项,该项中所含属性的值约等于指定的值。 "sn~=Brning" 可能返回 sn=Browning
& 查找与所有搜索过滤器中指定的条件相匹配的项 "(&(cn=John Browning)(l=Dallas))"
| 查找与至少一个搜索过滤器中指定的条件相匹配的项 "(|(cn=John Browning)(l=Dallas))"
! 查找与任何搜索过滤器中指定的条件都不匹配的项 "(!(cn=John Browning)(l=Dallas))"
= <string>*<string> 查找所包含的属性值与指定值相同的项(模糊匹配) "cn=y*zong" "cn=yan*"



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
必须使用搜索过滤器指定要搜索的属性。搜索过滤器的语法为:
         "<attribute> <operator> <value>"
例如,下面的搜索过滤器可以找到所有的特定项,只要该项中以 Smith 作为 sn(别称)属性的值:
         "sn=Smith"
可以在搜索过滤器中指定存储在目录中的任意属性。以下是用来搜索个人项的公用属性:
         cn -- 个人的公用名称
         sn -- 个人的姓
         telephonenumber -- 个人的电话号码
         l -- 个人的地理位置
如果这里不是太清楚可以参考:http: //407711169 .blog.51cto.com /6616996/1439623 
可以在 ldapsearch 命令行中指定搜索过滤器,或在文件中指定它们,并使用 lsearch 参数 -f 引用此文件。如果使用文件,请在单独的行中指定每个搜索过滤器。
请注意:如果 LDAP 目录(如 Domino LDAP 目录)支持语言标记,则可在搜索过滤器中包含它们。例如:
         "givenName;lang-fr=Etienne"
使用布尔运算符的多个搜索过滤器
您可以使用多个搜索过滤器以及布尔运算符。使用下列语法:
         "(operator(filter)(filter))"
例如,使用下面的搜索过滤器查找别称为 Browning、位置为 Dallas 的项。
         "(&(sn=Browning)(l=Dallas))"
布尔运算符可以嵌套。例如,使用下面的搜索过滤器在邮件网络域 MDN 中查找 surname 为 caneel 或 givenname 为 alfred 的项:
         "(&(maildomain=MDN)(|(sn=caneel)(givenname=alfred)))"



五、使用 ldapsearch 的样例

搜索 命令

使用端口 389 的主机 ldap.acme.com 上的所有项,并返回所有属性和值

同上,但仅返回属性名称

ldapsearch -h ldap.acme.com "objectClass=*"

ldapsearch -A -h ldap.acme.com" objectClass=*"

使用端口 389 的主机 ldap.acme.com 上的所有项,并且反向引用找到的所有别名 ldapsearch -a always -h ldap.acme.com "objectClass=*"
使用端口 389 的主机 ldap.acme.com 上的所有项,并返回 mail、cn、sn 和 givenname 等属性 ldapsearch -h ldap.acme.com "objectClass=*" mail cn sn givenname
在使用端口 389 的主机 ldap.acme.com 上,在 ”ou=West,o=Acme,c=US” 基准下搜索 (cn=Mike*),并返回所有属性和值 ldapsearch -b "ou=West,o=Acme,c=US" -h ldap.acme.com "(cn=Mike*)"

使用端口 389 的主机 ldap.acme.com 上的一个级别,并返回所有属性和值

同上,但限制基准的范围

ldapsearch -s onelevel -h ldap.acme.com "objectClass=*"

ldapsearch -s base -h ldap.acme.com "objectClass=*"

使用端口 389 的主机 ldap.acme.com 上的所有项,并返回所有的属性和值;搜索时间限制为五秒 ldapsearch -l 5 -h ldap.acme.com "objectClass=*"
使用端口 389 的主机 ldap.acme.com 上的所有项,并返回所有的属性和值;大小限制为五 ldapsearch -z 5 -h ldap.acme.com "objectClass=*"
使用端口 389 的主机 ldap.acme.com 上的所有项,捆绑为:用户“cn=John Doe,o=Acme”,口令“password”,并以 LDIF 格式返回所有的属性和值 ldapsearch -h ldap.acme.com -D "cn=john doe,o=acme" -w password -L "objectClass=*"
使用端口 389 的主机 ldap.acme.com。对“cn=John Doe,o=Acme”项,返回其允许匿名查看的所有属性 ldapsearch -h ldap.acme.com" -s base -b "cn=john doe,o=acme" objectClass=*"
配置为在端口 391 上侦听 LDAP 请求的另一台主机 bluepages.ibm.com 上的所有项 ldapsearch -h bluepages.ibm.com -p 391 "objectClass=*"
端口 391 上的 bluepages.ibm.com。对还有与 OR 过滤器中任意一个属性相匹配的属性的任何“个人”对象类型进行子树搜索(缺省),从组织“o=ibm”开始。超时值为 300 秒,返回的最大项数设为 1000。且仅返回 DN(缺省)和 CN(这是 Web 应用程序的公用过滤器)。 ldapsearch -h bluepages.ibm.com -p 391 -b "o=ibm" -l 300 -z 1000 "(&(objectclass=Person)(|(cn=jerry seinfeld*)(givenname=jerry seinfeld*)(sn=jerry seinfeld*)(mail=jerry seinfeld*)))" cn
端口 391 上的 bluepages.ibm.com。以基准项“cn=HR Group,ou=Asia,o=IBM”为起始,时间限制为 300 秒,查询此项的所有成员。(Web 应用程序中用以确定群组成员的另一个公用过滤器)。 ldapsearch -h bluepages.ibm.com -p 391 -b "cn=HR Group,ou=Asia,o=IBM" -s base -l 300 "(objectclass=*)" member









本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1440931,如需转载请自行联系原作者
目录
相关文章
|
XML JSON 缓存
Java实现根据关键词搜索1688新品数据API方法
Java实现根据关键词搜索1688新品数据API方法
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
276 0
|
自然语言处理 数据库 索引
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
221 0
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
|
自然语言处理 开发者 索引
搜索流程详细分析|学习笔记
快速学习搜索流程详细分析
118 0
搜索流程详细分析|学习笔记
|
自然语言处理 运维 算法
开放搜索查询分析服务架构解读
搜索行为在后端都会有大量的数据计算和处理才会召回符合用户需求的搜索结果,本次分享结合自建搜索业务中查询分析服务常见的问题及难点,介绍阿里云开放搜索查询分析具备的能力及解决方案,并深度解读阿里巴巴查询分析服务架构和兼容Elasticsearch的架构是如何实现的
1205 1
开放搜索查询分析服务架构解读
|
运维 自然语言处理 搜索推荐
新版本发布 | 开放搜索的统一召回引擎实践
阿里云开放搜索统一召回引擎,搜索召回环节同时支持阿里云自研Ha3引擎与阿里云Elasticsearch引擎,并提供多行业的搜索算法能力,助力企业高效实现搜索效果深度优化
988 0
新版本发布 | 开放搜索的统一召回引擎实践
|
存储 算法 搜索推荐
【新功能】开放搜索高级定制排序插件-Cava语言
但当业务遇到较强的定制需求,排序公式也比较复杂,需要自己开发业务逻辑的时,业务排序和基础排序就不尽人意了,此时可以通过开放搜索提供的高级定制排序插件--cava语言,来满足更多样的业务排序需求。
836 0
【新功能】开放搜索高级定制排序插件-Cava语言
|
自然语言处理 小程序 搜索推荐
小程序搜索服务优化最佳实践
小程序的诞生大大缩短了操作步骤以及省去了APP之间的切换成本,如何提升用户体验,促使更多流量变现,是大部分开发者们不断探索优化的方向。本文透过小程序“搜索服务的优化”的角度,结合了阿里云开放搜索的最佳实践,解读如何2步实现一站式高质量搜索体验~
3415 0
小程序搜索服务优化最佳实践