最近由于工作需要,不得不学习LDAP,第一次听到这个名词一脸懵逼。这是啥?数据库?那DC、DN、OU、O、sn、cn这些又都是些什么妖魔鬼怪,表名?字段?怎么像感觉上世纪九十年代的计算机词汇一样。相信大多数刚入门LDAP的人都会被这些词汇整懵,当然也不排除有一些一看就了如指掌的大神,这些人请忽略这篇文章。该篇文章主要用作经验分享与学习记录。本人在此抛砖引玉,文章如有不妥或错误之处,还请指出,谢谢大家。
一、基本概念:什么是LDAP
那么LDAP是什么呢?我当时第一眼,还以为是一个类似于mysql的数据库,其实LDAP并不是数据库,而是一个协议,具体是什么协议呢?叫做轻量目录访问协议。
字面上理解,它首先是一种协议,那就是一种标准,是基于基于X.500标准,并且支持TCP/IP协议的一种目录访问协议,通俗一点就是它就是一个目录,可以访问的目录,有点类似于linux的目录树。
二、结构
LDAP的目录结构是树状层次的结构,什么叫做层次目录结构呢,就像Windows的文件存储目录一样,当你需要找某个文件的时候,你需要点击计算机—>C盘—>windows文件夹—>xxx文件夹,一直往文件夹最里面去寻找直到找到你想要的文件。
那为什么叫树状的呢?它的访问过程像爬树一样,你想要的摘下那个被乔布斯咬了一口的苹果,你首先得从树根往上爬吧,然后树上有很多树杈,你先要在第一个树杈那里往左爬,第二个树杈那里往右爬,第三个树杈那里再往右爬,然后你就能摘下这个苹果。
所以当你想在LDAP中访问一条数据的时候,你要先从根节点访问,然后经过不同的分支访问你想要访问的数据。
三、举个栗子
假如你是小王的好朋友,粗心的他上班的时候忘记带手机了,需要你给他送过去,你该如何找到他呢?
**1.**首先去他公司,假设公司的域名为 xiaoniu.com
1.1基准DN: 开始访问的起点 O=Organization 为组织名
1.2根据X.500标准发展过来的两种基准DN表示方法:
(1) o=xiaoniu.com
(2) dc=xiaoniu,dc=com
**2.**你知道他在技术部,所以你问了前台小姐姐技术部怎么走
2.1 OU=Organization Unit为组织单元,可以理解为公司内部部门标识
ou=Technical (组织单元为公司的技术部)
3. 此时你已经来到了技术部,但是技术部这么多人你要怎么找到小王呢?
你还知道小王在运维组,所以你去来到运维组
3.1 OU=DevopsGroup (运维组)
**4.**你终于找到运维组,可是运维组这么多人,你要怎么找到他呢?
4.1 (1)uid=111111 (小王的工号)
(2)sn=‘wang’ (小王的姓)
(3)cn=‘wangrentang’ (小王的名字)
(4)telephoneNumber='13877777777' (小王的手机号)
5.通过小王的uid或者名字你终于找到了他,他非常感谢你,并且决定请你吃饭。将他的手机号码告诉了你,你成功获取到了小王的手机号属性
5.1你最后找到小王的方式有两种:
(1)基于uid: uid=111111,ou=DevopsGroup,ou=Technical,dc=xiaoniu,dc=com
(2)基于cn:cn=‘wangrentang’,ou=DevopsGroup,ou=Technical,dc=xiaoniu,dc=com
至此,你已经构成了一条完整的条目(Entry)
条目是什么呢?
条目(Entry)就是目录管理最基本的对象,类似字典中的词条、数据库中的记录等。
在LDAP中存在许许多多的条目,就像公司存在许许多多的员工,为了区分不同的条目,需要给条目定义唯一的标识,这个标识就是dn
目录树的每一个节点都表示一个条目。
例如上述的栗子中:
(1)基准DN: dc=xiaoniu,dc=com
(2)部门条目:
1)dn:ou=‘技术部’,dc=xiaoniu,dc=com
2)dn:ou=‘销售部’,dc=xiaoniu,dc=com
3)dn:ou=‘运维组’,ou=‘技术部’,dc=xiaoniu,dc=com
(3)人员条目
1)dn: uid=111111,ou=DevopsGroup,ou=Technical,dc=xiaoniu,dc=com
2)dn:uid=222222,ou=DevopsGroup,ou=Technical,dc=xiaoniu,dc=com
3)dn:cn='xiaoli',ou=DevopsGroup,ou=Technical,dc=xiaoniu,dc=com
以上三条人员条目表示的是xiaoniu公司,技术部,运维组的不同的三个人,每个人又有着不同的手机号,密码,邮箱等属性
四,基本关键字概念:
- dn: 一条记录的位置(唯一) ---- (Distinguished Name)
- sn:姓,如“王” ----------------------------------------(Surname)
- ou:记录所位于的组织单位--------------(Organization Unit)
- uid:用户ID wangrentang(一条记录的ID)----(User Id)
- o:组织,公司 -----------------------------------(Organization)
- dc:域名的部分,其格式是将完整的域名分成几部分----(Domain Component)
五、对象类:objectclass
对象类(ObjectClass)是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类,对象类具有继承的关系,
例如:运维组继承于技术部,技术部继承于公司组,继承对象类根据实际情况而定。
常见的对象类继承关系还有:top–>person–>organizationalPerson–>inetOrgPerson
inetOrgPerson对象类拥有姓名,uid,密码,手机,邮箱等属性集。
本篇文章对LDAP基本知识以及概念的介绍就到此为止,如有不妥当之处,请指正。
**