用 Python-LDAP 执行 LDAP 的 CRUD(创建、读取、更新和删除)操作:
大多数系统管理员在职业生涯中都会遇到需要与 LDAP 服务器交互的情况。本文讲解如何使用 LDAP 实现 Apache 身份验证,以及如何使用 Python 模块 python-ldap 在 OpenLDAP 数据库上执行 CRUD(即创建、读取、更新和删除)操作。
简介
在本文中,作者将讲解如何在 Amazon EC2 虚拟机上安装 OpenLDAP 的实例,设置 Apache/LDAP 身份验证,然后使用 Python 执行 CRUD(即创建、读取、更新和删除)操作。一定要注意,可以在 Fedora、Ubuntu、Red Hat、AIX? 等操作系统上安装 LDAP。但是在本文中,我们决定采用 Amazon EC2 虚拟机。您可以在任何 Linux? 发行版或手边的任何环境中进行实践。最后,我们将在本文中讨论许多代码和复杂的技术。您应该首先下载 示例代码,供阅读本文时参考。
通过程序控制 LDAP 常常是系统管理员的工作,所以 Python 中存在一个用来操作 LDAP 的库就不奇怪了。python-ldap 模块已经存在了一段时间了,在 参考资料 一节中可以找到官方文档的链接。
我们假设您熟悉一般的 LDAP 概念,比如目录模式、Distinguished Names (DN)、Common Names (CN)、过滤器和属性。本文不是 LDAP 教程;我们不喜欢大谈理论,而是主要关注使用和管理 LDAP 数据库的实际示例。
| 什么是 LDAP 以及它的用途是什么? 那么,究竟什么是 LDAP 呢?按照严格的定义,LDAP 代表 Lightweight Directory Access Protocol。但是,这个名称已经成了一种目录体系结构的同义词。当人们提到 LDAP 时,常常不是指协议,而是指目录服务。 LDAP 的最新版本是 V3。LDAP 被设计成一种通用目录,但是有几个约定。一个记录由一个 DN 和一个或多个属性组成,属性是在属性定义中定义的。LDAP 数据库的模式与典型的关系数据库模式定义语言很不一样。例如,典型的关系数据库是基于表的,而 LDAP 结合了继承。如果希望进一步了解 LDAP 理论,我们强烈建议您阅读 参考资料 中列出的 OpenLDAP 图书。 那么,LDAP 的用途是什么?它用于对构建 IT 基础结构的人进行身份验证。它还能够与 Samba 很好地配合,所以有经验的系统管理员可以以零成本设置非常高级的 IT 基础结构,而不必承担其他专有目录解决方案的成本。“身份验证” 意味着,基础结构中的所有计算机只需与 LDAP 目录服务器通信,即可使用相同的用户名和密码。 |
LDAP 的初始设置和填充
如果希望按照本文的说明设置 LDAP,那么需要一个 Fedora Core 8 实例。我们使用一个运行 Fedora Core 8 32-bit 的 Amazon EC2 虚拟机实例。可以在物理服务器上安装 LDAP,也可以使用您选择的技术在虚拟机上安装。注意,对于所有示例,我们使用一个称为 unisonis.com 的域,但是有一份 RFC 建议使用 example.com。
步骤 1:使用 yum 安装 openldap 包:
| [root@domU ]# yum install openldap openldap-devel openldap-servers openldap-clients [root@domU ]# yum list installed | grep openldap openldap.i386 2.3.39-4.fc8 installed openldap-clients.i386 2.3.39-4.fc8 installed openldap-devel.i386 2.3.39-4.fc8 installed openldap-servers.i386 2.3.39-4.fc8 installed |
步骤 2:设置管理员密码(我们将把 SSHA 散列值粘贴在 slapd.conf 中)。注意,slapd 代表 Standalone LDAP 服务,所以此服务控制 LDAP 本身:
| [root@domU ]# slappasswd New password: Re-enter new password: |
步骤 3:编辑 slapd.conf 配置文件并添加一般 LDAP 安装所需的条目,比如根 DN 和根/管理员密码:
| [root@domU ]# vi /etc/openldap/slapd.conf #Add entries: database bdb suffix "dc=unisonis,dc=com" rootdn "cn=Manager,dc=unisonis,dc=com" rootpw {SSHA}pasted_from_slappasswd_output directory /var/lib/ldap |
步骤 4:启动 LDAP 服务:
| [root@domU ]# service ldap start Starting slapd: [ OK ] |
![]() |

