Dec 13

[原]LDAP服务介绍 雷阵雨

linuxing , 19:00 , 网络服务 » 常见服务 , 评论(1) , 引用(0) , 阅读(40589) , Via 本站原创 | |
   最近在学习《Samba-HOWTO-Collection》,其中多次提到Samba+LDAP配置方法,以实现PDC及BDC等NT4 Style Domain。该方案待我整理后再写。先来学学基础,就是LDAP服务。
   Windows的活动目录(Active Directory)是运用LDAP最完美的实现,使用它可以把大量验证方式统一到在一个后台数据库里面,极大的方便管理员的管理。对于普通用户来说,也可以简化很多。有点像网易的“通行证”。
   而在红旗DC Server 5.0系统里面,也有很多套件是加入了对LDAP的支持,从开始的系统登陆(PAM),到常用的应用服务(FTP、Samba)等。我们这次不讲配置,讲原理,讲组织结构。
一、什么是LDAP
   LDAP是Lightweight Directory Access Protocol的简写,中文是轻型目录服务。它是基于X.500标准的,但支持TCP/IP,而且简单很多,并可根据需要定制。优点包括:
引用
1、可以在任何计算机平台上运行;
2、通过简单的“推”或“拉”的方式即可复制部分或全部数据,比常见的关系数据库简单很多;
3、主要是面向数据的查询服务,速度比关系数据库快很多;
4、可以使用ACI(类似ACL,访问控制列表)控制对数据的读、写管理,并且是在LDAP服务器内部实现的,不用担心应用程序Bug问题(相对Web架构来说);
5、使用类似DNS树的目录树结构,方便多级服务器的连接和管理;

二、什么情况下使用
   LDAP中的数据(成为entry,条目),一般是按照地理位置和组织关系进行组织的,常用于存放需要从不同地点读取,但是不需要经常更新的数据。大多数的LDAP服务器都为读进行了优化,在读的性能对比上,LDAP服务器会比关系数据库快一个数量级,但LDAP不适合存储需要经常改变的数据。所以,LDAP和关系数据库是有区别的。但也有后台使用关系数据库,中间架设LDAP服务器作为应用接口的情况,以加快用户获取信息的速度。好像常见的企业级邮件服务器就是这种。
三、LDAP的结构
   LDAP中目录是按照树型结构组织的,目录由条目(entry)组成,条目相当于关系数据库中的表;而条目是包含区别名(DN,Distiguished Name)的属性(Attribute)集合,而DN相当于关系数据库中的关键字(Primary Key),是区别的标识;属性就由类型(Type)和多个值(Values)组成,相当于关系数据库中的域是由域名和数据类型组成,只是不同在于其中的值不像关系数据库中为了降低数据冗余性必须不相关。
◎基准DN的常用格式是用DNS域名的不同部分组成,类似:
引用
dc=linuxfly,dc=org

这种方式比较灵活,而且也是Windows 活动目录使用的格式
◎在根目录下,使用容器(OU,Oraganization Unit)从逻辑上把数据区分开,例如:
引用
ou=people,ou=groups

◎在容器下面,就是由类型和属性组成对象类(objectclass ),而属性是可以自己定制的
以红旗DC Server 5.0带的OpenLDAP为例,一个条目的属性必须要遵循 /etc/openldap/schema/ 模式文件中定义的规则。规则包含在条目的 objectclass 属性中。
※这个不容易理解,看看nis.schema中的posixAccount objectclass
下面是对 uidNumber 属性的描述:
引用
attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
  DESC 'An integer uniquely identifying a user in an administrative domain'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

在所有的属性类型都已经定义了,它们被收集到 posixAccount objectclass 中:
引用
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
  DESC 'Abstraction of an account with POSIX attributes'
  MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
  MAY ( userPassword $ loginShell $ gecos $ description ) )

上面就是用类型定义属性,cn、uid、uidNumber等就是属性,用属性加入对象类。
在/etc/slapd.conf中加入不同的schema,可以定义不同的属性、对像类。而shema可以根据RFC的相关标准进行定制。
四、一条LDAP记录
目录信息树
点击在新窗口中浏览此图片
dn就是dc=linuxfly,dc=org,容器ou就是People、Groups,下面就是属性uid=ldapuser等。


LDAP 目录条目和 Linux 密码文件
点击在新窗口中浏览此图片
ldapuser条目:具有一个识别名属性 dn,它用作用户名,并与 userPassword 等一起用来在 LDAP 目录中记录信息,或与 LDAP 目录绑定在一起使用。
五、LDAP 数据交换格式LDIF
   LDAP LDIF 格式,是数据库信息的一种文本格式的表示。这种格式是行界定、冒号分隔的属性-值对。通过它,可以很方便的导入、导出LDAP条目。
# ldapsearch -x

引用

# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# linuxfly.org
dn: dc=linuxfly,dc=org
dc: linuxfly
objectClass: top
objectClass: domain

# People, linuxfly.org
dn: ou=People,dc=linuxfly,dc=org
ou: People
objectClass: top
objectClass: organizationalUnit

# Group, linuxfly.org
dn: ou=Group,dc=linuxfly,dc=org
ou: Group
objectClass: top
objectClass: organizationalUnit

# ldapuser, Group, linuxfly.org
dn: cn=ldapuser,ou=Group,dc=linuxfly,dc=org
objectClass: posixGroup
objectClass: top
cn: ldapuser
gidNumber: 500

# ldapuser, People, linuxfly.org
dn: uid=ldapuser,ou=People,dc=linuxfly,dc=org
uid: ldapuser
cn: ldapuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/ldapuser
gecos: test2

# search result
search: 2
result: 0 Success

# numResponses: 6
# numEntries: 5
Tags: , ,
lagy
2006/12/26 11:54
用这个能跨平台的话
那可以这样么:
搭建nfs文件服务器,在上面做LDAP
指定用户名和登陆后的目录
在windows客户端通过这样WEB登陆的方式
能直接象使用本地硬盘一样
读取和写入文件么
linuxing 回复于 2010/10/03 19:01
首先,要Windows支持nfs不是一件简单的事情,需要额外的工具的。(我找到的只有商业版本)
其次,Samba+LDAP就可以做到你说的目的,实现后非常的方便,我也已经测试通过了,但没时间整理,如果你有时间,可以先看看前面一篇的:
[原]用Samba做主域服务器
后面再熟悉Samba+LDAP就很容易了。

搭建域后,用户登陆就有本地盘和网络盘,很方便。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]