ldapsearch
查询api ldapsearch
ldapsearch命令参数说明
语法
|
|
参数 | 说 明 |
---|---|
-W | 指定密码,交互式,不需要在命令上写密码 |
-w | 指定密码,需要命令上指定密码 |
-H | ldapapi |
-D | 所绑定的服务器的DN,如cn=admin,dc=etiantian,dc=org |
-f | -f: filename.ldif文件 |
-b | -b 指定作为查询节点而不是默认的 |
-LLL | 以LDIF格式打印响应,不带注释 |
-x | 简单的认证 |
简单的搜索
最简单的在查询ldap条目的最简单方法是使用带有 “-x
” 选项进行简单身份验证,并使用 “-b
” 指定搜索域。
|
|
例如向 10.0.0.3 上openldap服务查询,该命令需要服务器接受匿名身份验证,这将可以查询而无需绑定管理员帐户
|
|
使用管理员账户进行搜索
使用管理员帐户进行搜索,必须使用backend配置的 RootDN 并在命令行使用 “-D
” 选项 和 “-W
” ,如果要使用非交互式认证,使用选项 “-w
”
|
|
例如,上章在安装时配置了RootDN:“ cn=admin,dc=test,dc=com ”。如果要使用此帐户执行搜索,可以使用命令
|
|
使用过滤器进行搜索
上述讲到的查询方法,是进行全局查询,会输出所有的条目,这样浪费了时间和资源,在大多数情况下,都希望查询以在特定的目录树中查找特定对象。而 ”过滤器“ filter 就是为了解决这个问题的。
要使用过滤器搜索,需要在 ldapsearch
命令的末尾附加 filter 公式:<object_class>=<object_value>
|
|
例如查找所有对象,可以使用过滤器 objectclass
并且值为 ”*
“ ,
|
|
查找特定的用户
如果查询目录树上的所有用户账户,如上一章初始化数据时,初始化的用户账户类为 ”posixAccount“ ,可以通过 ”posixAccount“ 来缩小查询范围
|
|
如果每个条目输出的内容多的情况下,也可以输出的属性值来进一步缩小搜索范围,例如只需要 uid
与 gidNumber
|
|
使用运算符进行筛选搜索
ldapsearch
可以使用多个过滤器,使用多个过滤器用运算符 “AND
” 进行分割,需要注意的一点是,多个过滤器必须将所有条件括在括号中,并在查询的开头加一个 “&
” 字。
|
|
例如,查找具有 “objectclass=posixAccount
” 与 “uid=cylon
” 的条目,您将运行以下查询
|
|
也可以使用或运算符 ” OR
“,使多个 “OR
” 运算符,需要所有条件括在括号内,并使用符号 “ |
” 写在过滤条件开头。
|
|
例如,搜索 uid=user01
或者 uid=zhangsan
的用户
|
|
也可以使用 “非” 运算符 ” !
“,使多个 “!
” 运算符,需要所有条件括在括号内,并使用符号 “ !
” 写在过滤条件开头。
|
|
例如,匹配 uid
不为 zhangsan
的用户
|
|
使用多个过滤条件
多个过滤条件可以使用 ()
括起来所有的过滤条件
|
|
使用通配符进行搜索
除了运算符,还有一种高校过滤器就是通配符 “*
” 这使得 ldapsearch
过滤器拥有一些正则表达式功能
使用通配符,只需要对应的查询条件字符串结尾或开头加上 “*
” 即可
|
|
例如查询 uid
以 “c
” 开头的用户
|
|
扩展过滤器
可以由符合 “ :
”隔的其他过滤器,例如区分大小写与不区分大小写
CaseIgnoreMatch
不区分大小写cn:caseExactMatch
区分大小写
|
|
例如类似值搜索
|
|
查找openldap服务配置
ldapsearch
命令有一种高级用法是查询 slapd
服务的配置。要进行这种搜索,必须使用选项 “-Y
” 并指定 关键字 “EXTERNAL
” 作为身份验证机制。
|
|
例如
|
|
Notes:这种查询命令需要直接在slapd服务对应节点上运行。
这类搜索也可以使用过滤器,例如指定搜索数据库的配置
|
|
更新API ldapmodify
ldapmodify
有两个参数来指定如何修改数据:
replace
要修改的字段changetype: modify
模式为修改模式dn
对那个条目进行搜索,RootDN的后缀,对于每个条目例如,user 为uid=<>,ou=<>,dc=test,dc=com
例如下面命令是将 cylon用户的uid更改为10010
|
|
删除API ldapdelete
删除API与更新API类似,不过内容只需要一个 dn
(这个dn是隐式的,不用单独声明字段),例如删除用户cylon
|
|
使用 ldapmodify
删除条目,只要吧 changetype: delete
在加上显式声明的 dn
也可以删除条目,例如
|
|
插入API ldapadd
ldapapp
使用起来比较复杂,在添加时,区分与RootDN,子条目,并且属性相关都需要配置对
下列时增加一个用户
|
|