什么是目录服务?-
目录服务的数据类型主要是字符型, 而不是关系数据库提供的整数、浮点数、日期、货币等类型
- 同样也不提供象关系数据库中普遍包含的大量的函数
- 目录有很强的查询(读)功能,适合于进行大量数据的检索
- 但目录一般只执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能
- 它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制.
- 目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新
- X.500
- LDAP
- Actrive Directory,Microsoft公司
- NIS
-
LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了 -
LDAP可以很快地得到查询结果,不过在写方面,就慢得多 -
LDAP提供了静态数据的快速查询方式 -
Client/server模型
-
LDAP是一种开放Internet标准,LDAP协议是跨平台的 的Interent协议
-
公司员工的电话号码簿和组织结构图 -
客户的联系信息 -
计算机管理需要的信息,包括NIS映射、email假名,等等 -
软件包的配置信息 -
公用证书和安全密匙
server | |
client | 数据库操作client 工具:ldapadd, ldapsearch |
| 实用client 工具:radius+ldap, pam+ldap |
匿名 |
基本认证 # ldapadd -x -D "cn=root,dc=otas,dc=cn" -W -f base.ldif -x就是simple authetication Enter LDAP Password: 输入admin123 |
SASL LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证 |
[root@vmmac modules]# cat /etc/services | grep ldap
ldap
ldap
ldaps
ldaps
-
在LDAP中目录是按照树型结构组织——目录信息树(DIT)
-
DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;
cn=Fran Smith,ou=employees,dc=foobar,dc=com -------------------------------------------- |
1。在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用 ROOT做根,通常称为BaseDN 。
2。因为历史(X.500)的原因,LDAP目录用 OU(Organization Unit) 从逻辑上把数据分开来。
3. Ou 下就是真正的用户条目
DN相当于关系数据库表中的关键字(Primary
是一个识别属性,通常用于检索
基于cn(姓名) | cn=Fran Smith,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 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSQxJGRTMFJoR1lw 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:: e2NyeXB0fSQxJGxHdE9tTW9v shadowLastChange: 14186 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 503 gidNumber: 503 homeDirectory: /home/macg |
LDAP目录树的最顶部就是根,也就是所谓的“Base DN"。
BaseDN通常采用两种格式:
商务型格式——以X.500格式表示的基准DN | o="FooBar, Inc.", c=US |
Internet型格式——以公司的Internet 域名地址表示的基准DN) 是最常用的格式 | |
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 |
Foobar, Inc.的员工Fran Smith的LDAP记录。
dn: uid=fsmith, ou=employees, dc=foobar, dc=com 完整DN,包括在目录树中的完整路径 CN有多个值 你可能只知道她的名字叫Fran,但是对人力资源处的人来说她的正式名字叫做Frances。因为保存了她的两个名字 |
显然属于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 |
dn: uid=test1,ou=People,dc=otas,dc=cn uid: test1 cn: test1 objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e2NyeXB0fSQxJHpGR3drdUdl shadowLastChange: 14298 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 500 gidNumber: 500 homeDirectory: /home/test1 /etc/shaddow |
-
从属ou不同
group属于ou=Group