编译并安装 OpenLDAP
本节讨论 Senior Level Linux Professional(LPIC-3)考试 301 的 302.1 主题的内容。这个主题的权值为 3。
在本节中,学习如何:
∙ 从源代码编译和配置 OpenLDAP
∙ 理解 OpenLDAP 后端数据库
∙ 管理 OpenLDAP 守护进程
∙ 排除安装期间的错误
OpenLDAP 是一个实现 LDAP 服务器和相关工具的开放源码应用程序。因为它是开放源码的,所以可以免费下载它的源代码。OpenLDAP 项目并不直接发布二进制代码,但是大多数主流的发行版都打包了二进制代码。在本教程中,学习如何从源代码和软件包安装 OpenLDAP。perl下载安装教程
从源代码编译
第一步是从项目站点下载 OpenLDAP 的最新版本(见 参考资料 中的下载链接)。这个项目通常有两个当前版本:一个是稳定版本,另一个是测试版本。本教程使用稳定版 2.3.30 和 2.3.38。如果按照本教程进行操作,一些目录名可能会随版本而变化。
为了从下载的文件中提取源代码,输入 tar -。这会将下载的文件解压到一个目录中。用 cd openldap-2.3.38 命令进入这个新目录(根据需要替换您的 OpenLDAP 版本号)。
现在的位置在源代码目录中。现在必须配置系统的构建环境,然后构建这个软件。OpenLDAP 使用脚本 configure 执行这些操作。输入 ./configure --help 就可以看到可用的所有选项。一些选项定义安装文件的位置(比如 --prefix):其他选项定义希望安装的 OpenLDAP 特性。清单 1 列出特性及其默认设置。
清单 1. 与 OpenLDAP 特性相关的配置选项
SLAPD (Standalone LDAP Daemon) Options: --enable-slapd enable building slapd [yes] --enable-aci enable per-object ACIs (experimental) [no] --enable-cleartext enable cleartext passwords [yes] --enable-crypt enable crypt(3) passwords [no] --enable-lmpasswd enable LAN Manager passwords [no] --enable-spasswd enable (Cyrus) SASL password verification [no] --enable-modules enable dynamic module support [no] --enable-rewrite enable DN rewriting in back-ldap and rwm overlay [auto] --enable-rlookups enable reverse lookups of client hostnames [no] --enable-slapi enable SLAPI support (experimental) [no] --enable-slp enable SLPv2 support [no] --enable-wrappers enable tcp wrapper support [no] SLAPD Backend Options: --enable-backends enable all available backends no|yes|mod --enable-bdb enable Berkeley DB backend no|yes|mod [yes] --enable-dnssrv enable dnssrv backend no|yes|mod [no] --enable-hdb enable Hierarchical DB backend no|yes|mod [yes] --enable-ldap enable ldap backend no|yes|mod [no] --enable-ldbm enable ldbm backend no|yes|mod [no] --enable-ldbm-api use LDBM API auto|berkeley|bcompat|mdbm|gdbm [auto] --enable-ldbm-type use LDBM type auto|btree|hash [auto] --enable-meta enable metadirectory backend no|yes|mod [no] --enable-monitor enable monitor backend no|yes|mod [yes] --enable-null enable null backend no|yes|mod [no] --enable-passwd enable passwd backend no|yes|mod [no] --enable-perl enable perl backend no|yes|mod [no] --enable-relay enable relay backend no|yes|mod [yes] --enable-shell enable shell backend no|yes|mod [no] --enable-sql enable sql backend no|yes|mod [no] SLAPD Overlay Options: --enable-overlays enable all available overlays no|yes|mod --enable-accesslog In-Directory Access Logging overlay no|yes|mod [no] --enable-auditlog Audit Logging overlay no|yes|mod [no] --enable-denyop Deny Operation overlay no|yes|mod [no] --enable-dyngroup Dynamic Group overlay no|yes|mod [no] --enable-dynlist Dynamic List overlay no|yes|mod [no] --enable-lastmod Last Modification overlay no|yes|mod [no] --enable-ppolicy Password Policy overlay no|yes|mod [no] --enable-proxycache Proxy Cache overlay no|yes|mod [no] --enable-refint Referential Integrity overlay no|yes|mod [no] --enable-retcode Return Code testing overlay no|yes|mod [no] --enable-rwm Rewrite/Remap overlay no|yes|mod [no] --enable-syncprov Syncrepl Provider overlay no|yes|mod [yes] --enable-translucent Translucent Proxy overlay no|yes|mod [no] --enable-unique Attribute Uniqueness overlay no|yes|mod [no] --enable-valsort Value Sorting overlay no|yes|mod [no] SLURPD (Replication Daemon) Options: --enable-slurpd enable building slurpd [auto] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-subdir=DIR change default subdirectory used for installs --with-cyrus-sasl with Cyrus SASL support [auto] --with-fetch with fetch(3) URL support [auto] --with-threads with threads [auto] --with-tls with TLS/SSL support [auto] --with-yielding-select with implicitly yielding select [auto] --with-odbc with specific ODBC support iodbc|unixodbc|auto [auto] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] --with-tags[=TAGS] include additional configurations [automatic] |
在清单 1 中,可以看到许多特性在默认情况下是禁用的,比如元目录和模块。另外,许多选项被标为 “auto”,如果系统上有适当的库,这些选项就会打开。最好不要依赖这种自动行为,而是明确建立所需特性的列表并启用它们。如果缺少任何库,就会在编译时收到错误消息,而不是在以后才发现。
一些配置选项可以传递 no、yes 或 mod。no 禁用这个选项,yes 将选项静态链接到最终的二进制代码,mod 将选项构建为单独的共享库。共享库在运行时装载到服务器中(参见下面的 “服务器参数(全局)”)。在默认情况下,模块是静态链接的;所以它们是二进制代码不可分割的组成部分。如果希望使用动态模块,那么还需要 --enable-modules 选项。动态模块的好处是可以在不修改二进制代码的情况下测试各种选项,而且可以单独打包模块。
清单 2 给出一个基于 Fedora 7 中的配置的配置行,它启用了许多有帮助的特性。所选的大多数选项将启用后面教程中需要的特性,比如 --enable-slurpd 和 --enable-multimaster(用于复制)和 --enable-meta(用于元目录)。其他选项启用各种后端,比如 ldab、bdb、null 和 monitor。
清单 2. 一个构建配置示例
./configure --enable-plugins --enable-modules --enable-slapd --enable-slurpd \ --enable-multimaster --enable-bdb --enable-hdb --enable-ldap --enable-ldbm \ --enable-ldbm-api=berkeley --enable-meta --enable-monitor --enable-null \ --enable-shell --enable-sql=mod --disable-perl \ --with-kerberos=k5only --enable-overlays=mod --prefix=/tmp/openldap |
清单 2 启用了插件和多个后端,包括基于 Structured Query Language(SQL)的后端和 Berkeley Database 文件。后端是 OpenLDAP 存储和获取数据的方式,下面的 “后端和数据库” 和以后的教程会详细讨论后端。
清单 2 还构建单独的守护进程 slapd 和复制守护进程 slurpd。为了进行测试,还启用了覆盖,覆盖允许更容易地定制后端数据库。因为这是一个用于测试的设置,安装前缀被改为 /tmp/openldap,所以生成的二进制代码放在 /tmp/openldap/libexec 中。
当执行 configure 脚本时,它会检查所需的库,然后生成构建环境。如果 configure 成功完成,那么用 make depend; make 编译 OpenLDAP。
编译代码之后,可以用 make install 命令安装 OpenLDAP。这会把所有二进制代码、手册页和库复制到 /tmp/openldap 中的相应位置。
从包安装
您可能会觉得从源代码编译太麻烦。从源代码编译很耗费时间,而且如果缺少适当的开发库,那么会更棘手。如果您的 C 语言开发经验不足,那么可能无法理解构建错误消息的意思。幸运的是,大多数发行版打包了 OpenLDAP 的二进制代码,并预先进行了配置。这些二进制代码通常包含所需的所有特性。
基于 RPM 的发行版
Fedora 和 CentOS 使用 yum 工具安装来自存储库的 RedHat 软件包(RPM)。为了查明可用的包,应该使用 yum list 命令,还可以传递一个正则表达式来过滤返回的包列表。清单 3 搜索包含 openldap 这个单词的所有包。
清单 3. 查明可以通过 yum 获得哪些包
# yum list \*openldap\* Loading "installonlyn" plugin Setting up repositories Reading repository metadata in from local files Installed Packages openldap.i386 2.3.30-2.fc6 installed openldap-clients.i386 2.3.30-2.fc6 installed openldap-devel.i386 2.3.30-2.fc6 installed openldap-servers.i386 2.3.30-2.fc6 installed openldap-servers-sql.i386 2.3.30-2.fc6 installed Available Packages compat-openldap.i386 2.3.30_2.229-2.fc6 updates |
在 OpenLDAP 这样的大型应用程序中,客户机和服务器工具常常分成两个单独的包。另外,还可能到一些兼容库(为了确保链接老版本软件的应用程序仍然可以正常工作)。安装包的方法是使用 yum install 和包的名称,比如 yum install openldap-clients openldap-servers;这会下载并安装客户机和服务器包以及所需的所有依赖关系。
对于 Red Hat Enterprise Linux,搜索 openldap 的包的命令是 up2date --showall | grep openldap。安装包的方法是将包名称作为参数传递给 up2date,比如 up2date openldap-clients openldap-servers。
使用 chkconfig ldap on 确保在系统引导时启动 OpenLDAP 服务器。
基于 Debian 的发行版
基于 Debian 的发行版(比如 Ubuntu)使用 Advanced Packaging(APT)工具安装包。首先,使用 apt-cache search openldap 命令搜索 OpenLDAP 包,见清单 4。
清单 4. 列出 Ubuntu Linux 中可用的 OpenLDAP 包
notroot@ubuntu:~$ apt-cache search openldap libldap2 - OpenLDAP libraries libldap2-dev - OpenLDAP development libraries python-ldap - A LDAP interface module for Python. [dummy package] python-ldap-doc - Documentation for the Python LDAP interface module python2.4-ldap - A LDAP interface module for Python 2.4 ldap-utils - OpenLDAP utilities libldap-2.2-7 - OpenLDAP libraries slapd - OpenLDAP server (slapd) |
清单 4 显示几个可用的包。slapd 包提供服务器,并在安装时解析所有依赖软件。运行 sudo apt-get install slapd 安装服务器。还可能需要 ldap-utils 包,这个包包含命令行客户机。
| ||||
配置软件
安装 OpenLDAP 之后,必须配置它。为了进行测试,只需要指定几个设置;但是对于真实环境(和 LPIC 考试),必须充分了解各个选项。
有两个配置文件控制 OpenLDAP 的行为;这两个文件在默认情况下都放在 /etc/openldap/ 中。第一个文件是 f,它控制 LDAP 客户机的全局行为。所有 LDAP 服务器的配置
文件称为 f。f 还包含复制守护进程 slurpd 的配置。本文主要关注 f,尤其是与 slapd 守护进程相关的部分。
f 的格式很简单:一个关键字,后面是一个或多个参数,它们要符合以下条件:
∙ 关键字必须从 0 列开始 — 即,前面没有空格。
∙ 如果参数中有空格,那么这个参数必须加上双引号("")。
∙ 如果一行以空格开头,它就是前一行的延续。
∙ 关键字不是大小写敏感的,但是根据所用的关键字不同,参数可能是大小写敏感的。
与大多数 UNIX® 工具一样,hash 符号(#)表示注释。hash 符号后面的所有内容都被忽略。
f 分成两部分:全局选项和后端数据库选项。尽管对于次序没有限制,但是必须注意放置指令的位置,因为一些指令会改变处理后续指令的上下文。例如,如果还没有遇到 backend 或 database 关键字,那么选项就是全局的。遇到 database 指令之后,所有后
续选项都应用于这个数据库。这种情况一直持续到另一个 database 指令,此后的指令应用于新的数据库。
本系列后面的教程会讨论一些全局选项,比如用于访问控制和复制的选项。下面讨论常用的配置指令。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论