LDAP概念和原理

http://blog.sina.com.cn/s/blog_6151984a0100ey3z.html

什么是目录服务?
 

    目录服务就是按照 树状存储信息的模式

      目录服务的特点?目录服务与关系型数据库不同?
  •  目录服务的数据类型主要是字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型
为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax)
  • 同样也不提供象关系数据库中普遍包含的大量的函数
  • 目录有很强的查询(读)功能,适合于进行大量数据的检索
  • 但目录一般只执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能
  • 它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制.
  • 目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新


  常见的目录服务软件
  • X.500
  • LDAP
  • Actrive Directory,Microsoft公司
  • NIS

      LDAP
      LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写
      LDAP标准实际上是在X.500标准基础上产生的一个简化版本


   LDAP特点
  •    LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  •    LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  •    LDAP提供了静态数据的快速查询方式
  •    Client/server模型
      Server用于存储数据
      Client提供操作目录信息树的工具
            这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  •    LDAP是一种开放Internet标准,LDAP协议是跨平台的的Interent协议
        它是基于X.500标准的, 与X.500不同, LDAP支持TCP/IP(即可以分布式部署)



      LDAP存储这样的信息最为有用:也就是数据需要从不同的地点读取,但是不需要经常更新:
  •      公司员工的电话号码簿和组织结构图  
  •      客户的联系信息  
  •      计算机管理需要的信息,包括NIS映射、email假名,等等 
  •      软件包的配置信息  
  •      公用证书和安全密匙  

      Ldap的client /server结构
server  /usr/sbin/slapd -u ldap -h ldap:///
client数据库操作client   用于对ldap server库进行操作
工具:ldapadd, ldapsearch
 实用client   用于将ldap server库在实际工作中使用
工具:radius+ldap, pam+ldap

   
      身份认证在LDAP中提供三种认证机制:
匿名    Ldapsearch –x-LLL
基本认证   通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证
# ldapadd -x -D"cn=root,dc=otas,dc=cn" -W -f base.ldif
-x就是simpleauthetication

Enter LDAP Password: 输入admin123
 adding new entry "dc=otas,dc=cn"
 adding new entry "ou=People,dc=otas,dc=cn"
 adding new entry"ou=Group,dc=otas,dc=cn"
SASL   Simple Authentication and Secure Layer
LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证


   Ldap端口号(显然提供分布式ldap)——389,636
[root@vmmac modules]# cat /etc/services | grep ldap
ldap                      389/tcp                                  明文
ldap                      389/udp                                                明文
ldaps                    636/tcp                                                # LDAP over SSL
ldaps                    636/udp                                                # LDAP over SSL

      TLS 安全性
      分布式LDAP是以 明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL的后继者,由OpenSSL 包)加密机制来解决这个问题。




      LDAP目录数据结构
  •    在LDAP中目录是按照树型结构组织——目录信息树(DIT)
                  DIT是一个主要进行读操作的数据库
  •    DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;
条目是具有分辨名DN(Distinguished Name)的属性-值对(Attribute-value,简称AV)的集合


      在目录树中怎么组织数据  
cn=Fran Smith,ou=employees,dc=foobar,dc=com
             ------------ -----------------
               容器条目     BaseDN
--------------------------------------------
               DN
 

1。在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用 ROOT做根,通常称为BaseDN
2。因为历史(X.500)的原因,LDAP目录用 OU(Organization Unit)从逻辑上把数据分开来。
    Ou 也是一种条目,容器条目
3. Ou 下就是真正的用户条目



    什么是dn?
      DN,Distinguished Name分辨名
      在LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的 唯一名称标识
DN相当于关系数据库表中的关键字(Primary  Key);
是一个识别属性,通常用于检索
      常见的两种DN设置:
基于cn(姓名)cn=FranSmith,ou=employees,dc=foobar,dc=com 
dn格式就是这么一大串
最常见的CN是/etc/group转来的条目
基于uid(User ID)uid=fsmith,ou=employees,dc=foobar,dc=com
最常见的UID是/etc/passwd和/etc/shadow转来的条目
 
[root@vmmac migration]# ldapsearch -x -LLL "uid=mac*"
dn:uid=mac,ou=People,dc=otas,dc=cn        唯一标适
uid:mac               
cn:mac                                 CN=Common Name 为用户名或服务器名
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJGRTMFJoR1lwJHk0dkdKc1ByM3BlVmo4Z243dEhoQTA=
shadowLastChange: 13697
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/mac

dn: uid=macg,ou=People,dc=otas,dc=cn
uid: macg
cn: macg
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJGxHdE9tTW9vJHR0TFhpYXc2Y1VJb0RyWU9xUlVDSzE=
shadowLastChange: 14186
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 503
gidNumber: 503
homeDirectory: /home/macg
 
 
    Base DN (就是dc=,dc= )
LDAP目录树的最顶部就是根,也就是所谓的“Base DN"。
BaseDN通常采用两种格式:
  (假定我在名为FooBar的电子商务公司工作,这家公司在Internet上的名字是foobar.com)
商务型格式——以X.500格式表示的基准DNo="FooBar, Inc.",c=US  
Internet型格式——以公司的Internet 域名地址表示的基准DN)
是最常用的格式
  dc=foobar,dc=com 

 

      LDIF 格式(此格式用于LDAP数据导入、导出)
LDIF是LDAP数据库信息的一种 文本格式,包含:
  •     行界定
  •    冒号分隔
  •    属性-值对
[root@vmmac migration]# cat passwd.ldif
dn: uid=mac,ou=People,dc=otas,dc=cn
uid: mac
cn: mac
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$dS0RhGYp$y4vGJsPr3peVj8gn7tHhA0
gidNumber: 500
homeDirectory: /home/mac


      一个典型的 entry例子(一个属性可以有多个值)
Foobar, Inc.的员工Fran Smith的LDAP记录。
dn: uid=fsmith, ou=employees, dc=foobar,dc=com 
完整DN,包括在目录树中的完整路径

 objectclass: person 
 objectclass:organizationalPerson 
 objectclass:inetOrgPerson 
 objectclass: foobarPerson 
 uid: fsmith 
 givenname: Fran 
 sn: Smith 
 cn: Fran Smith 
 cn: Frances Smith 
CN有多个值
你可能只知道她的名字叫Fran,但是对人力资源处的人来说她的正式名字叫做Frances。因为保存了她的两个名字

 telephonenumber:510-555-1234 
 roomnumber: 122G 
 o: Foobar, Inc. 
 mailRoutingAddress:fsmith@foobar.com 
 mailhost: mail.foobar.com 
 userpassword:{crypt}3x1231v76T89N 
 uidnumber: 1234 
 gidnumber: 1200 
 homedirectory:/home/fsmith 
 loginshell:/usr/local/bin/bash  



      属性/值搜索的时候是不区分大小写的
  某些特殊的属性(例如,password)在搜索的时候需要区分大小写。 


      / etc/passwd和/etc/group文件里的用户被migrate导入ldap后,会产生两条条目,分别属于People这个ou,和Group这个ou
显然属于People ou的条目对应passwd,属于Group ou的条目对应group
dn: cn=test1,ou=Group,dc=otas,dc=cn
objectClass: posixGroup
objectClass: top
cn: test1
userPassword:: e2NyeXB0fXg=
gidNumber: 500
   /etc/group
dn:uid=test1,ou=People,dc=otas,dc=cn
uid: test1
cn: test1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword::e2NyeXB0fSQxJHpGR3drdUdlJFIyZ3BZTlh3QzVPaXFOck1CTGU2QjE=
shadowLastChange: 14298
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/test1
   /etc/passwd
/etc/shaddow


   user和group在ldap中的不同
  •    从属ou不同
user属于ou=People
group属于ou=Group
  •    dn表示方式不同
user的dn用uid打头:uid=news,ou=People,dc=otas,dc=cn
group的dn用cn打头:cn=news,ou=Group,dc=otas,dc=cn

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值