LDAP的功能模型
一、功能模块
功能模型主要是对这个目录服务进行操作
1、查找的功能
2、更新或者修改的功能
3、认证的功能
在命令行中如何使用这些方法进行操作
1、通过openldap-clients 这个包的安装使得有些命令可以进行操作
2、通过红帽的目录服务
最好还是使用openldap-clients的这,因为在很多的不同发行版的Linux都是通用的。
openldap-clients 都有些什么基本的操作命令
ldapsearch 在目录服务中进行搜索
ldapadd 经一个LDIF的 文件更新到目录服务中
ldadmodify 修改一个已经存在在目录服务中的条目
ldappasswd ,ldapmodrdn,ldapdelete 等都是常用的操作命令
二、OpenLDAP Client 的配置
为什么要先进行配置,以为如果我们不配置client服务, 那么每一次查询或者修改一些数据的时候都将是很麻烦的如:
1、修改配置文件(/etc/openldap/ldap.conf):
[root@station2 dirsrv]# vim /etc/openldap/ldap.conf
BASE dc=station2,dc=example,dc=com
HOST station2.example.com
#添加以上两行,为了在使用openldap的时候简化操作
2、如果想要在本个用户进行修改,删除等操作,还要对~/.ldaprc进行修改
[root@station2 ~]# vim .ldaprc
BINDDN cn=Directory Manager
#这里说的就是使用这个超级用户用户进行操作
三、查询ldapsearch
1、导入测试用数据库
[root@station2 ~]# cp /usr/share/dirsrv/data/Example.ldif /root/example.ldif
#Example.ldif为redhat的ds服务器安装时自带
[root@station2 ~]#vi /root/example.ldif
:%s/dc=example,dc=com/dc=station2,dc=example,dc=com/gi
:%s/dc:\ example/dc: station2/gi
#将其相关数据改成自身ldap服务器数据
[root@station2 ~]# ldapadd -x -c -W -f Example.ldif
Enter LDAP Password:
adding new entry "dc=station2,dc=example,dc=com"
#导入example.ldif到数据库
2、使用ldapsearch查询数据(匿名)
[root@station2 ~]# ldapsearch -x "uid=zhangsan123"
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: uid=zhangsan123
# requesting: ALL
# zhangsan123, People, station2.example.com
dn: uid=zhangsan123,ou=People,dc=station2,dc=example,dc=com
cn: zhangsam 123
sn: zhang
givenName: Emanuel
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: zhangsan123
telephoneNumber: +1 408 555 0933
facsimileTelephoneNumber: +1 408 555 9752
roomNumber: 3906
manager: uid=jwalker, ou=People, dc=station2,dc=example,dc=com
mail: zhangsan123@example.com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
不同参数的使用说明
-H: url Use server at url #这里的大写H 是加的URL路径,如果是小写的h 那么就加主机名
-x :Use simple, not SASL binds #只是用简单的认证,而没有经过加密。如上面的搜索的时候使用[root@station2 ~]# ldapsearch -x "uid=xduan" 这个时候使用匿名这个用户进行的搜索。
-D dn :Bind using dn #指定DN的名字
-W :Prompt for simple bind password #指定使用什么用户进行操作
-Z “Try to use StartTLS; -ZZ requires it; for LDAPS: -H ldaps://server #设定是否是用加密的机制
-L Less verbose LDIF; up to -LLL
-b dn Base DN in tree to start search from
-s scope Search scope: sub, one, or base
据-L使显示小的信息,而-LLL是显示更小的信息
如:
[root@station2 ~]# ldapsearch -x "uid=zhangsan123" -LLL
dn: uid=zhangsan123,ou=People,dc=station2,dc=example,dc=com
cn: zhangsam 123
sn: zhang
givenName: Emanuel
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: zhangsan123
telephoneNumber: +1 408 555 0933
facsimileTelephoneNumber: +1 408 555 9752
roomNumber: 3906
manager: uid=jwalker, ou=People, dc=station2,dc=example,dc=com
mail: zhangsan123@example.com#
#这样的好处可已将这个文件导出来,然后进行修改,然后就可以导入到ldap数据库中
-b :要开始搜索的DN字段
-s:指搜索的范围,一共有三种:1、sub:所有的都搜索,包括子条目 2、one :搜自己和自己的下一级,下下级不可以搜索到 3、base 只是搜索自己 ,不包含下一级
3、采用运算符进行搜索
ldapsearch -x '(uid=burns)' mail #只是所搜某一个关键字
LDAP的搜索也可以使用:
= Exact match
>= Greater than or equal to #这里是根据字符串来搜索的
<= Less than or equal to
~= Approximate match #可以使用约等于
LDAP同样也可以逻辑运算
NOT: (!(age>=21))
AND: (&(sn=jones)(o=IBM))
OR: (|(sn=laurel)(sn=hardy))
实例:
root@station2 ~]# ldapsearch -x "(|(uid=zhangsan123)(uid=jvedder))"
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (|(uid=zhangsan123)(uid=jvedder))
# requesting: ALL
#
# jvedder, People, station2.example.com
dn: uid=jvedder, ou=People, dc=station2,dc=example,dc=com
cn: Jeff Vedder
sn: Vedder
givenName: Jeff
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: jvedder
mail: jvedder@example.com
telephoneNumber: +1 408 555 4668
facsimileTelephoneNumber: +1 408 555 0111
roomNumber: 3445
manager: uid=bparker, ou=People, dc=station2,dc=example,dc=com
# zhangsan123, People, station2.example.com
dn: uid=zhangsan123,ou=People,dc=station2,dc=example,dc=com
cn: zhangsam 123
sn: zhang
givenName: Emanuel
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: zhangsan123
telephoneNumber: +1 408 555 0933
facsimileTelephoneNumber: +1 408 555 9752
roomNumber: 3906
manager: uid=jwalker, ou=People, dc=station2,dc=example,dc=com
mail: zhangsan123@example.com
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2