红帽目录服务的基本客户端工具
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://linuxsafe.blog.51cto.com/438124/667052
2011-09-17 11:49:37
客户端命令
客户端工具软件包是openldap-clients包含了几个小命令
- ldapsearch
- ldapadd
- ldapdelete
- ldapmodify
- ldappasswd
- ldapmodrdn
配置客户端
为了便于我们的操作我们需要在客户端上设置一些默认预设的目录服务环境,好让客户端更高效的工作
- /etc/openldap/ldap.conf
这个配置文件帮助客户端确定访问的目录服务器和查询范围
# # LDAP Defaults # BASE dc=server109,dc=example,dc=com #BASE指定查询范围 HOST server109.example.com #HOST指定目录服务器
- ~/.ldaprc
这个配置文件是绑定以什么身份操作目录服务,redhat-ds默认允许匿名查询可以不提供密码。但涉及到记录的添加,删除等操作就需要有管理权限的用户来做了,这里就是绑定一个管理账户操纵目录服务,免得以后操作总是要输入管理身份,很麻烦。
BINDDN cn=Directory Manager
查询
现在我们就试试查询的命令是否缩减一些了
ldapsearch -x 'uid=fishcool' -LLL # -LLL标示输出标准的ldif文件内容 # uid=fishcool是查询条件
如果不设置刚才的客户端预设值呢会有什么后果
ldapsearch -x -b ou=People,dc=server109,dc=example,dc=com -D 'cn=Directory Manager' -h server109.example.com 'uid=fishcool' -LLL # -x 简单认证 # -b 指定搜索范围 # -D 指定用什么身份来做查询 # -h 指定在哪台目录服务做查询 # -b和-h 在/etc/openldap/ldap.conf预充了 # -D 参数在~/.ldaprc预设了
还有一些其他的参数我们来认识一下
-W: BINDDN账户的密码,当做添加,删除这些需要身份验证的操作时目录服务就去找.ldaprc下得BINDDN账户并要求输入密码。 -Z: 尝试使用tls加密,如果没有就继续 -ZZ: 强制使用tls加密,那么目录服务器的地址就必须改成 – H ldaps://server109.example.com
如果你在搜索出结果后只想得到所有用户的cn全名如何做呢
ldapsearch -x -LLL cn # 在结果中过滤掉什么属性
现在我们来看看搜索条件
= >= <= ~= (!(age>21)) (&(sn=jones)(o=IBM)) (&(sn=jones)(|(givenName=bridget)(givenName=tom))) (|(sn=fish)(sn=shark)) *
记录的删除
ldapdelete [-r] [-f]
ldapdelete -x -W uid=dogsmart,ou=People,dc=server109,dc=example,dc=com
RDN的修改
ldapmodrdn [-r]
用户密码的修改
只能在一个安全连接下进行比如证书或者kerberos
ldappasswd [-s]
添加记录
ldapadd [-f]
这里给你一个真实的用户信息,让你能够写成ldif文件,我们现在来编辑这个ldif文件(adduser.ldif):
dn: uid=eblues,ou=People,dc=server109,dc=example,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetorgperson uid: eblues sn: Blues giveName: Elwood cn: Elwood Blues street: 1060 West Addison l: Chicago st: IL postalCode: 60613
看看是否有这个记录
ldapadd -x -W -f adduser.ldif
修改记录
ldapmodify [-f]
ldapsearch -x 'uid=fishcool' -LLL dn: uid=fishcool,ou=People,dc=server109,dc=example,dc=com uid: fishcool #我想为fishcool添加一个电话号码属性 objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetorgerson GiveName: fish sn: cool cn: fish cool mail: fishcool@server109.example.com #我想修改邮箱为fishcool@redhat.com postalCode: 665504 #我想删除这个邮编 postalCode: 778095
我编写了一个文件
dn: uid=fishcool,ou=People,dc=server109,dc=example,dc=com changetype: modify # 修改类型为"modify" add: telephoneNumber # 添加"telephoneNumber"属性 telephoneNumber: +190 22557799 # telephoneNumber值 dn: uid=fishcool,ou=People,dc=server109,dc=example,dc=com changetype: modify # 修改类型为"modify" delete: postalCode # 删除属性postalCode postalCode: 665504 # postalCode值为665504,因为postCode有多个属性值,所以需指定一个值删除
开始执行修改
ldapmodify -x -f modify.ldif -W # -f 指定一个ldif文件
查看一下结果
ldapsearch -x 'uid=fishcool' -LLL