今儿个,咱来聊聊 ldapsearch 这玩意儿。前阵子,公司里头要搞个统一认证系统,说是要用 LDAP,我这之前也没咋接触过,没办法,只能硬着头皮上呗。
两眼一抹黑,啥也不知道。先在自己电脑上捣鼓,得先把环境搭起来。我这电脑是 Ubuntu 的,听同事说,得装个叫 OpenLDAP 的包,才能用 ldapsearch。那还说直接开干!
打开终端,输入:
sudo apt install ldap-utils
安装完,这心里踏实一点。就是咋用的问题。网上搜一堆资料,看得我头晕眼花的,什么参数、过滤器,一大堆。后来我发现,还是得动手试试才行。
先用最简单的命令试试:
ldapsearch -x
这一敲回车,出来一堆东西。虽然看不懂,但起码有反应,说明这玩意儿能用。
然后,我就开始琢磨,咋能查到我想要的信息?比如,我想查查某个用户的信息,该咋办?
又是一番搜索,发现可以用 -D 参数指定管理员账号,用 -w 参数指定密码,用 -b 参数指定搜索的起始位置,用 -H 指定服务器地址。这下,感觉有点门道。
我试着拼一条命令:

ldapsearch -x -H ldap://<你的服务器地址>:389 -D "cn=admin,dc=example,dc=com" -w <你的密码> -b "dc=example,dc=com" "(uid=<用户名>)"
- -x:简单认证。
- -H ldap://<你的服务器地址>:389:这是俺们服务器地址和端口,换成你自个儿的。
- -D "cn=admin,dc=example,dc=com":这是管理员账号,也得换成你自个儿的。
- -w <你的密码>:这是管理员密码,别告诉别人!
- -b "dc=example,dc=com":这是搜索的起始位置,根据你自个儿的目录结构来。
- "(uid=<用户名>)":这是搜索过滤器,就是说,我要找 uid 是某个值的那个人。
一运行,果然,那个用户的信息就出来!当时那叫一个激动,总算有点眉目。
更进一步,筛选信息
后来我又发现,出来的东西太多,有时候我只想看其中的几项,咋办?
继续研究,发现可以在搜索过滤器后面加上要显示的属性名,多个属性名之间用空格隔开。比如,我只想看用户的姓名和邮箱:
ldapsearch -x -H ldap://<你的服务器地址>:389 -D "cn=admin,dc=example,dc=com" -w <你的密码> -b "dc=example,dc=com" "(uid=<用户名>)" cn mail

这下,出来的结果就清爽多。
这 ldapsearch ,就像剥洋葱,一层一层地剥,才能看到里面的东西。虽然一开始挺费劲,但搞明白之后,还是挺有成就感的。今儿个就分享到这儿,希望能帮到跟我一样刚开始接触 LDAP 的伙计们。