- ch1 理解ldap - 什么是ldap
- ch2 理解ldap - OpenLDAP安装
- ch3 理解ldap - OpenLDAP客户端命令行使用
- ch4 理解ldap - OpenLDAP架构与Schema设计
- ch5 理解ldap - OpenLDAP使用SSL/TLS通信安全
- ch6 理解ldap - OpenLDAP中的4种复制机制
- ch7 理解ldap - OpenLDAP访问控制(ACL)
- ch8 理解ldap - OpenLDAP备份与恢复策略
- ch9 理解ldap - openldap中的一些高级配置
- ch10 理解ldap - Linux系统接入OpenLDAP做认证后端
- ch11 理解ldap - 使用SSSD接入OpenLDAP实现身份验证
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,子条目,并且属性相关都需要配置对
下列时增加一个用户
| |