首页 > 代码库 > LDAP学习
LDAP学习
LDAP概述
目录系统是关于某些类别的对象(例如人)的信息列表。目录可以用于查找特定对象的信息,也可以反方向查找满足特定需求的对象。 企业中的员工通讯录就是一个目录系统。目录访问协议(directory access protocol)就是用来访问目录中数据的标准化方式。最广泛使用的是 轻量级目录访问协议(lightweight directory access protocol,LDAP)。
LDAP数据模型
在LDAP目录中存储的是类似于面向对象语言中 对象 的条目(entry)。每个条目必须有一个能标示自己的 可区别名称(distinguished name, DN),DN又由一组 相对可区别名称(relative DN, RDN)组成。
例如(下面的例子都存在于我们后面将要搭建的openldap环境中):
cn=user01,ou=People,dc=massclouds,dc=com
这个DN唯一标示的条目代表了目录中的一个人。 其中各个RDN的含义是:
cn: common name(s) for which the entity is known by
ou: organizational unit this object belongs to
dc: domain component
就像面向对象语言中的对象一样,条目 也有所属的类,也拥有自己的属性。条目可以属于多个类,这些类也拥有继承关系。 而条目中的属性就是定义在这些类中的。关于objectclass 、属性的规则是定义在schema中的。
下面是定义一个条目的LDIF(LDAP Data Interchange Format, LDAP数据交换格式):
dn: cn=user01,ou=People,dc=massclouds,dc=com cn: user01 gidnumber: 500 homedirectory: /home/user01 loginshell: /bin/bash objectclass: inetOrgPerson objectclass: posixAccount objectclass: top sn: user01 title: uid: user01 uidnumber: 836031732 userpassword: {SSHA}25vgYD/sRglAUSKLKfIU7hya9Kp/cFUS
上面的例子中,表示user01的条目属于三个objectclass: inetOrgPerson 、posixAccount和top。 objectclass分为 结构型、辅助型和抽象型,每个条目必须要属于一个结构型的objectclass。 在objectclass中定义了必须的属性和可选的属性,条目如果属于某个objectclass,那么就必须要有这个objectclass所有的必须属性。
LDAP学习