浅谈LDAP服务

LDAP是目录服务,前身是X500,但是X500不支持TCP/IP,所以出现了LDAP协议,默认端口是389。LDAP的查询速度很快,写入很慢,适用于读多写少的情况。

LDAP中的结构是树形的,一条记录,包含一个dn,dn由dc,ou,cn等组成,这正好是一个域名的方式,一个dn就是一个主键,用来表示这条记录的唯一性。

例如 dn:cn=harbor,ou=eng,dc=centling,dc=com

一条记录中有若干属性,这些属性类似于java类的属性的概念,首先要引入class,LDAP中叫objectClass,每个objectClass都有各自的属性,有些属性是必填的,有些则不是。

例如

dn: uid=alex.yu,ou=people,dc=centling,dc=com

uid: alex.yu
cn: alex yu
gidNumber: 11078
givenName: alex
homeDirectory: /home/alex.yu
loginShell: /bin/bash
mail: [email protected]
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
sn: yu
uidNumber: 11078

top是一个抽象类,没有任何属性,相当于java的Object类。这里面引用了3个objectClass:inetOrgPerson,posixAccount,top


ldapsearch命令

-h 主机名

-b base dn 从树形结构的哪个记录开始查询

-x  匿名查询

-D bind dn 用户的用户名 "uid=alex.yu,ou=people,dc=centling,dc=com",则绑定了这个用户

-w 上述绑定用户的密码

-W 提示输入密码

-z 设置输出记录数

-l 超时时间

-LLL 以LDIF形式显示结果

例如 从dc=centling,dc=com开始查询,以username1这个用户查询,查询记录中含有uid=figo的用户

ldapsearch -h 127.0.0.1 -b "dc=centling,dc=com" -D "uid=username1,ou=people,dc=centling,dc=com" -W -LLL "uid=figo"

或者用匿名查询,但是服务器要支持匿名查询

ldapsearch -h 127.0.0.1 -b "dc=centling,dc=com" -x -LLL "uid=figo"


查询语法

or  "(|(uid=A)(uid=B))"

and "(&(uid=A)(email=B))"





你可能感兴趣的:(浅谈LDAP服务)