目录
摘要
轻量级目录访问协议 (LDAP) 是一组设计用来访问和维护信息目录的协议。LDAP 可用于多种目的,如用户和组管理、系统配置管理或地址管理。本章简要介绍 OpenLDAP 的工作原理以及如何使用 YaST 管理 LDAP 数据。尽管实施多个 LDAP 协议,但本章着重介绍 OpenLDAP 实施。
在联网环境中保持重要信息组织有序并且访问便捷是非常重要的。这可以通过目录服务实现。目录服务就像常见的电话黄页,可以将信息组织得井然有序,便于快速搜索。
理想情况下,应该有一个中央服务器将数据组织到目录中,并使用特定协议将其分发给所有客户机。数据以特定的方式组织,以支持众多应用程序进行访问。这样,各种日历工具和电子邮件客户程序就不必保持自己的数据库 - 只需访问中央储存库即可。这种方式极大地减轻了管理这些信息的工作。利用 LDAP 之类的开放且标准化的协议,可以保证让尽量多的客户应用程序都能访问这些信息。
这里所说的目录实际上是指一种为快速有效的读取和搜索而优化的数据库。
为支持尽量多的(并行)读取访问,需要限制写访问,只允许管理员执行次数较少的更新。要对常规数据库进行优化,使其能够在短时间内接受尽量多的数据。
由于只能在受限模式下执行写访问,所以可以采用目录服务来管理几乎不变的静态信息。常规数据库中的数据通常频繁变化(动态数据),而公司名录中的电话号码并不像会计数字(举例来说)那样经常变化。
管理静态数据时,极少更新现有数据集。而处理动态数据时,特别是在涉及像银行帐户或会计帐户这样的数据集时,数据的一致性举足轻重。如果要将从某处减去的数目加到另一个位置,必须在一个事务中同时执行这两个运算,以确保数据存量保持平衡。数据库支持处理这类事务,而目录却不行。短期内数据之间的不一致在目录中是完全可以接受的。
LDAP 这类目录服务并不是为支持复杂的更新或查询机制而设计的。访问此服务的所有应用程序都应能够便捷地获取访问权。
许多目录服务以前就存在,而且现在仍然存在于 Unix 和其他操作系统中。Novell NDS、Microsoft ADS、Banyan 的 Street Talk 及 OSI 标准 X.500 只是其中的几个例子。LDAP 最初是作为轻量级的 DAP(目录访问协议)设计的,后者是为访问 X.500 而开发的。X.500 标准用来管理目录项的层次组织。
LDAP 是 DAP 的精简版。在保留 X.500 项层次的同时,LDAP 新增了跨平台功能并能够节省资源。利用 TCP/IP,在对接应用程序和 LDAP 服务之间建立接口的工作得到大大简化。
与此同时,LDAP 还不断发展,已经越来越多地作为不带 X.500 支持的独立解决方案应用。LDAP 在 LDAPv3(软件包 openldap2 中的协议版本)中支持参照,从而能够具有分布式数据库。同时还新增了 SASL(简单鉴定和安全层)。
LDAP 不仅能按最初设计的那样查询 X.500 服务器中的数据,它还提供公开源代码服务器 slapd,该服务器可以将对象信息储存在本地数据库中。另外还提供名为 slurpd 的扩展程序,该程序负责复制多个 LDAP 服务器。
openldap2 软件包包含:
独立 LDAPv3 服务器,用于管理基于 BerkeleyDB 的数据库中的对象信息。
使用此程序,可以将针对本地 LDAP 服务器数据的修改复制到网络上安装的其他 LDAP 服务器中。
slapcat、slapadd、slapindex
Unix 系统管理员以往使用 NIS 服务在网络内进行名称解析和数据分发。/etc 中的文件包含的配置数据以及目录 group、hosts、mail、netgroup、networks、passwd、printcap、protocols、rpc 和 services 都通过客户程序在网络中分发。这些文件很容易维护,因为它们都是简单的文本文件。但随着数据量的不断增大,处理起来就会因为缺乏组织结构而愈发困难。NIS 专为 Unix 平台设计,因此无法在异构网络中让其充当中央数据管理器。
有别于 NIS,LDAP 服务不仅仅适用于单纯的 Unix 网络。Windows 2000 之后的服务器都支持 LDAP 作为目录服务。Novell 也提供 LDAP 服务。上述应用程序任务在非 Unix 系统中同样受支持。
LDAP 原理适用于所有需要集中管理的数据结构。以下是一些应用示例:
用于替代 NIS 服务
邮件路由选择(postfix、sendmail)
邮件客户程序(如 Mozilla、Evolution 和 Outlook)的通讯录
为 BIND9 名称服务器管理区域说明
异构网络中使用 Samba 进行用户鉴定
可以扩展此列表,因为 LDAP 是可扩展的,这是 NIS 所不能及的。由于更便于搜索数据,明确定义的数据层次结构简化了对大量数据的管理。