9.2. OpenLDAP


本节介绍 OpenLDAP 2.4 的安装和配置,这是 LDAPv2 和 LDAPv3 协议的开源实现。
注意
从 Red Hat Enterprise Linux 7.4 开始,openldap-server 软件包已弃用,并将不包含在 Red Hat Enterprise Linux 未来的主发行版本中。因此,迁移到红帽企业 Linux 中包含的身份管理或红帽目录服务器。有关身份管理的详情,请参阅 Linux 域身份、身份验证和策略指南。有关目录服务器的详情请参考 第 9.1 节 “Red Hat Directory Server”

9.2.1. LDAP 简介

通过使用客户端-服务器架构,LDAP 提供了一种可靠的方法来创建可从网络访问的中央信息目录。当客户端尝试修改此目录中的信息时,服务器验证用户是否有权进行更改,然后根据请求添加或更新条目。为确保通信安全,可使用 传输层安全 (TLS)加密协议来防止攻击者拦截传输。
重要
Red Hat Enterprise Linux 7.5 及更高版本中的 OpenLDAP 套件不再使用网络安全 服务 (NSS)的 Mozilla 实施。而是使用 OpenSSL。OpenLDAP 继续使用现有的 NSS 数据库配置。
重要
由于 Resolution for POODLE SSLv3.0 漏洞(CVE-2014-3566)中描述的漏洞,对于不允许通过配置设置禁用 SSLv3 的组件,红帽建议您不依赖 SSLv3 协议进行安全。OpenLDAP 是系统组件之一,不提供允许有效禁用 SSLv3 的配置参数。要降低风险,建议您使用 stunnel 命令提供安全隧道,并使用 SSLv3 禁用 stunnel。有关使用 stunnel 的更多信息,请参阅 Red Hat Enterprise Linux 7 安全指南
LDAP 服务器支持多个数据库系统,这使管理员能够灵活地为计划服务的信息类型选择合适的解决方案。由于定义良好的客户端 应用程序编程接口( API),能够与 LDAP 服务器通信的应用程序数量很多,且在数量和质量上不断增加。

9.2.1.1. LDAP 术语

以下是本章中使用的特定于 LDAP 的术语列表:
条目
LDAP 目录中的单一单元。每个条目通过其唯一的可 辨识名称( DN)标识。
attribute
与条目直接关联的信息。例如,如果组织表示为 LDAP 条目,与此组织相关联的属性可能包括地址、传真编号等。同样,人们也可以作为具有共同属性(如个人电话号码或电子邮件地址)的条目来表示。
属性可以具有单个值,或者具有无顺序的空格分隔的值列表。尽管某些属性是可选的,但其他属性是必需的。必要属性使用 iwl 定义来指定,并可在位于 /etc/openldap/slapd.d/cn=config/cn=schema/ 目录中的 schema 文件中找到。
属性的断言及其对应的值也称为 Relative Distinguished Name( RDN)。与全局唯一的可分辨名称不同,相对区分名称仅在每个条目中唯一。
LDIF
LDAP 数据交换格式 (LDIF)是 LDAP 条目的纯文本表示形式。它采用以下形式:
[id] dn: distinguished_name
attribute_type: attribute_valueattribute_type: attribute_value…
…
可选的 id 是由应用决定的数字,用于编辑该条目。每个条目可以根据需要包含任意 数量的 attribute_type 和 attribute_value 对,只要它们都在对应的架构文件中定义。空白行表示条目的结尾。

9.2.1.2. OpenLDAP 功能

OpenLDAP 套件提供许多重要功能:
  • LDAPv3 支持 - LDAP 版本 2 以来协议的许多更改都旨在提高 LDAP 的安全性。除了其他改进外,这还包括对简单身份验证和安全层(SASL)、传输层安全性(TLS)以及安全套接字层(SSL)协议的支持。
  • LDAP Over IPC - 使用进程间通信(IPC)通过无需通过网络进行通信来提高安全性。
  • IPv6 支持 - OpenLDAP 与下一代 Internet 协议版本 6(IPv6)兼容。
  • LDIFv1 支持 - OpenLDAP 与 LDIF 版本 1 完全兼容。
  • 更新了 C API - 当前的 C API 改进了程序员连接和使用 LDAP 目录服务器的方式。
  • 增强的单机 LDAP 服务器 - 包括更新的访问权限控制系统、线程池、更好的工具等。

9.2.1.3. OpenLDAP 服务器设置

在 Red Hat Enterprise Linux 中设置 LDAP 服务器的典型步骤如下:
  1. 安装 OpenLDAP 套件。有关所需软件包的更多信息,请参阅 第 9.2.2 节 “安装 OpenLDAP 套件”
  2. 自定义配置,如 第 9.2.3 节 “配置 OpenLDAP 服务器” 所述。
  3. 按照 第 9.2.5 节 “运行 OpenLDAP 服务器” 所述启动 slapd 服务。
  4. 使用 ldapadd 实用程序向 LDAP 目录添加条目。
  5. 使用 ldapsearch 工具验证 slapd 服务是否正确访问信息。

9.2.2. 安装 OpenLDAP 套件

OpenLDAP 库和工具套件由以下软件包提供:
表 9.1. OpenLDAP 软件包列表
软件包 Description
openldap 包含运行 OpenLDAP 服务器和客户端应用程序所需的库的软件包。
openldap-clients 包含用于查看和修改 LDAP 服务器上的目录的命令行实用程序的软件包。
openldap-servers 包含用于配置和运行 LDAP 服务器的服务和实用程序的软件包。这包括 独立 LDAP 守护进程 slapd
compat-openldap 包含 OpenLDAP 兼容性库的软件包。
另外,以下软件包通常与 LDAP 服务器一同使用:
表 9.2. 经常安装的其他 LDAP 软件包列表
软件包 Description
nss-pam-ldapd 包含 nslcd 的软件包,一个本地 LDAP 名称服务,允许用户执行本地 LDAP 查询。
mod_ldap
包含 mod_authnz_ldapmod_ldap 模块的软件包。mod_authnz_ldap 模块是 Apache HTTP 服务器的 LDAP 授权模块。此模块可以针对 LDAP 目录验证用户的凭据,并且可以根据用户名、完整 DN、组成员资格、任意属性或完整的过滤器字符串强制实施访问控制。同一软件包中包含的 mod_ldap 模块提供了可配置的共享内存缓存,以避免在多个 HTTP 请求间重复目录访问,并支持 SSL/TLS。请注意,这个软件包由可选频道提供。有关红帽其他频道的更多信息,请参阅《 系统管理员指南》 中添加 Optional 和 Supplementary 存储库
要安装这些软件包,请使用以下格式的 yum 命令:
yum install package
例如,要执行基本 LDAP 服务器安装,在 shell 提示符后输入以下内容:
~]# yum install openldap openldap-clients openldap-servers
请注意,您必须具有超级用户权限(即,您必须以 root身份登录),才能运行此命令。有关如何在 Red Hat Enterprise Linux 中安装新软件包的更多信息,请参阅系统管理员 指南中的 安装软件包。

9.2.2.1. OpenLDAP 服务器实用程序概述

要执行管理任务,openldap-servers 软件包会安装以下工具以及 slapd 服务:
表 9.3. OpenLDAP 服务器实用程序列表
命令 Description
slapacl 允许您检查对属性列表的访问权限。
slapadd 允许您将 LDIF 文件中的条目添加到 LDAP 目录。
slapauth 允许您检查 ID 的列表以获得身份验证和授权权限。
slapcat 允许您以默认格式从 LDAP 目录中拉取条目,并将它们保存在 LDIF 文件中。
slapdn 允许您根据可用的架构语法检查可辨识名称(DN)的列表。
slapindex 允许您根据当前内容重新索引 slapd 目录。每当您在配置文件中更改索引选项时,运行此实用程序。
slappasswd 允许您创建用于 ldapmodify 工具或 slapd 配置文件中的加密用户密码。
slapschema 允许您使用对应的架构检查数据库合规性。
slaptest 允许您检查 LDAP 服务器配置。
有关这些实用程序及其用法的详细描述,请查看 “安装的文档”一节 中所述的相应 man page。
重要
虽然只有 root 用户可以运行 slapadd,但 slapd 服务以 ldap 用户身份运行。因此,目录服务器无法修改由 slapadd 创建的任何文件。要更正这个问题,在运行 slapdadd 工具后,在 shell 提示符下输入以下内容:
~]# chown -R ldap:ldap /var/lib/ldap
警告
要保留数据完整性,请在使用 slapaddslapcatslapindex 之前停止 slapd 服务。您可以通过在 shell 提示符后输入以下内容来完成此操作:
~]# systemctl stop slapd.service
有关如何启动、停止、重启和检查 slapd 服务的当前状态的更多信息,请参阅 第 9.2.5 节 “运行 OpenLDAP 服务器”

9.2.2.2. OpenLDAP 客户端实用程序概述

openldap-clients 软件包安装以下工具,可用于在 LDAP 目录中添加、修改和删除条目:
表 9.4. OpenLDAP 客户端实用程序列表
命令 Description
ldapadd 允许您从文件或标准输入向 LDAP 目录添加条目。它是 ldapmodify -a 的符号链接。
ldapcompare 允许您将给定属性与 LDAP 目录条目进行比较。
ldapdelete 允许您从 LDAP 目录删除条目。
ldapexop 允许您执行扩展的 LDAP 操作。
ldapmodify 允许您从文件或标准输入修改 LDAP 目录中的条目。
ldapmodrdn 允许修改 LDAP 目录条目的 RDN 值。
ldappasswd 允许您设置或更改 LDAP 用户的密码。
ldapsearch 允许搜索 LDAP 目录条目。
ldapurl 允许您编写或取消编译 LDAP URL。
ldapwhoami 允许您在 LDAP 服务器上执行 whoami 操作。
ldapsearch 外,通过引用包含要进行的更改的文件来更轻松地使用这些工具,而不是为每个条目输入命令以在 LDAP 目录中更改。每个实用程序的 man page 中概述了此类文件的格式。

9.2.2.3. 通用 LDAP 客户端应用程序概述

尽管有多个图形 LDAP 客户端能够在服务器上创建和修改目录,但 Red Hat Enterprise Linux 中不包含这些客户端。可在只读模式下访问目录的常用应用程序包括 Mozilla ThunderbirdEvolution、Evolution 或 Ekiga

9.2.3. 配置 OpenLDAP 服务器

默认情况下,OpenLDAP 配置存储在 /etc/openldap/ 目录中。下表重点介绍了这个目录中最重要的目录和文件:
表 9.5. OpenLDAP 配置文件和目录列表
路径 Description
/etc/openldap/ldap.conf 使用 OpenLDAP 库的客户端应用的配置文件。这包括 ldapadd,ldapsearch,Evolution 等等。
/etc/openldap/slapd.d/ 包含 slapd 配置的目录。
请注意,OpenLDAP 不再从 /etc/openldap/slapd.conf 文件中读取其配置。相反,它使用位于 /etc/openldap/slapd.d/ 目录中的配置数据库。如果您从之前安装中有一个已存在的 slapd.conf 文件,您可以运行以下命令将其转换为新格式:
~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
slapd 配置由按分级目录结构组织的 LDIF 条目组成,推荐的编辑这些条目是使用 第 9.2.2.1 节 “OpenLDAP 服务器实用程序概述” 中描述的服务器工具。
重要
LDIF 文件中的错误可能会导致 slapd 服务无法启动。因此,强烈建议您直接编辑 /etc/openldap/slapd.d/ 中的 LDIF 文件。

9.2.3.1. 更改全局配置

LDAP 服务器的全局配置选项存储在 /etc/openldap/slapd.d/cn=config.ldif 文件中。常用的指令如下:
olcAllows
The olcAllows 指令允许您指定要启用的功能。它采用以下形式:
olcAllows: feature
它接受空格分隔的功能列表,如 表 9.6 “Available olcAllows 选项” 所述。默认选项为 bind_v2
表 9.6. Available olcAllows 选项
选项 Description
bind_v2 启用接受 LDAP 版本 2 绑定请求。
bind_anon_cred 当可辨识的名称(DN)为空时,启用匿名绑定。
bind_anon_dn 当可辨识名称(DN) 为空时启用匿名绑定。
update_anon 启用匿名更新操作的处理。
proxy_authz_anon 启用匿名代理授权控制的处理。

例 9.1. 使用 the olcAllows 指令

olcAllows: bind_v2 update_anon
olcConnMaxPending
The olcConnMaxPending 指令允许您指定匿名会话的最大待处理请求数。它采用以下形式:
olcConnMaxPending: number
默认选项为 100

例 9.2. 使用 olcConnMaxPending 指令

olcConnMaxPending: 100
olcConnMaxPendingAuth
The olcConnMaxPendingAuth 指令允许您指定通过身份验证的会话的最大待处理请求数。它采用以下形式:
olcConnMaxPendingAuth: number
默认选项为 1000

例 9.3. 使用 the olcConnMaxPendingAuth 指令

olcConnMaxPendingAuth: 1000
olcDisallows
The olcDisallows 指令允许您指定禁用哪些功能。它采用以下形式:
olcDisallows: feature
它接受空格分隔的功能列表,如 表 9.7 “Available olcDis 允许 选项” 所述。默认情况下不禁用任何功能。
表 9.7. Available olcDis 允许 选项
选项 Description
bind_anon 禁用接受匿名绑定请求。
bind_simple 禁用简单的绑定身份验证机制。
tls_2_anon 在收到 STARTTLS 命令时禁用匿名会话强制。
tls_authc 在通过身份验证时不允许 STARTTLS 命令。

例 9.4. 使用 the olcDisallows 指令

olcDisallows: bind_anon
olcIdleTimeout
The olcIdleTimeout 指令允许您指定在关闭空闲连接前要等待的秒数。它采用以下形式:
olcIdleTimeout: number
默认禁用这个选项(即,设置为 0)。

例 9.5. 使用 olcIdleTimeout 指令

olcIdleTimeout: 180
olcLogFile
The olcLogFile 指令允许您指定要在其中写入日志消息的文件。它采用以下形式:
olcLogFile: file_name
默认情况下,日志消息写入标准错误。

例 9.6. 使用 the olcLogFile 指令

olcLogFile: /var/log/slapd.log
olcReferral
The olcReferral 选项允许您指定服务器的 URL,以便在服务器无法处理请求时处理请求。它采用以下形式:
olcReferral: URL
默认禁用这个选项。

例 9.7. 使用 the olcReferral 指令

olcReferral: ldap://root.openldap.org
olcWriteTimeout
The olcWriteTimeout 选项允许您指定在关闭与未完成的写入请求的连接之前要等待的秒数。它采用以下形式:
olcWriteTimeout
默认禁用这个选项(即,设置为 0)。

例 9.8. 使用 the olcWriteTimeout 指令

olcWriteTimeout: 180

9.2.3.2. Front End 配置

OpenLDAP 前端配置存储在 etc/openldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif 文件中,并定义全局数据库选项,如访问控制列表(ACL)。详情请查看 Global Database Options man page 中的 slapd-config(5) 部分。

9.2.3.3. monitor 后端

/etc/openldap/slapd.d/cn=config/olcDatabase= availabilitymonitor.ldif 文件控制 OpenLDAP 监控后端。如果启用,它将由 OpenLDAP 自动生成并动态更新,包含有关后台程序运行状态的信息。后缀为 cn=Monitor,无法更改。详情请查看 slapd-monitor(5) man page。

9.2.3.4. 数据库特定配置

默认情况下,OpenLDAP 服务器使用 hdb 数据库后端。除了使用支持子树重命名的层次结构数据库布局外,它与 bdb 后端相同,并使用相同的配置选项。此数据库后端的配置存储在 /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif 文件中。
有关其它后端数据库列表,请查看 slapd.backends(5) man page。您在单独后端的 man page 中找到的特定于数据库的设置。例如:
# man slapd-hdb
注意
bdbhdb 后端已弃用。考虑将 mdb 后端用于新安装。
以下指令通常用于特定于数据库的配置:
olcReadOnly
The olcReadOnly 指令允许您以只读模式使用数据库。它采用以下形式:
olcReadOnly: boolean
它接受 TRUE (启用只读模式)或 FALSE (启用对数据库的修改)。默认选项为 FALSE

例 9.9. 使用 the olcReadOnly 指令

olcReadOnly: TRUE
olcRootDN
The olcRootDN 指令允许您指定为 LDAP 目录上操作设置的访问控制或管理限制参数不受限制的用户。它采用以下形式:
olcRootDN: distinguished_name
它接受可 辨识的名称( DN)。默认选项为 cn=Manager,dn=my-domain,dc=com

例 9.10. 使用 olcRootDN 指令

olcRootDN: cn=root,dn=example,dn=com
olcRootPW
The olcRootPW 指令允许您为使用 a olcRootDN 指令指定的用户设置密码。它采用以下形式:
olcRootPW: password
它接受纯文本字符串或散列。要生成哈希,在 shell 提示符后输入以下内容:
~]$ slappaswd
New password:
Re-enter new password:
{SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxD

例 9.11. 使用 the olcRootPW 指令

olcRootPW: {SSHA}WczWsyPEnMchFf1GRTweq2q7XJcvmSxD
olcSuffix
The olcSuffix 指令允许您指定要提供信息的域。它采用以下形式:
olcSuffix: domain_name
它接受 完全限定域名( FQDN)。默认选项为 dc=my-domain,dc=com

例 9.12. 使用 the olcSuffix 指令

olcSuffix: dc=example,dc=com

9.2.3.5. 扩展架构

从 OpenLDAP 2.3 开始,/etc/openldap/slapd.d/ 目录还包含之前位于 /etc/openldap/schema/ 中的 LDAP 定义。可以使用默认架构文件作为指南,扩展 OpenLDAP 使用的架构来支持附加属性类型和对象类。但是,此任务已超出本章的讨论范畴。有关此主题的更多信息,请参阅 https://openldap.org/doc/admin24/schema.html.

9.2.3.6. 建立安全连接

OpenLDAP 套件和服务器可以使用传输层安全(TLS)框架进行保护。TLS 是一种加密协议,旨在通过网络提供通信安全性。红帽企业 Linux 7 中的 OpenLDAP 套件使用 OpenSSL 作为 TLS 实施。
要使用 TLS 建立安全连接,请获取所需的证书。然后,必须在客户端和服务器上配置多个选项。至少,服务器必须配置有证书颁发机构(CA)证书,以及它自己的服务器证书和私钥。客户端必须配置包含所有可信 CA 证书的文件名称。
通常,服务器只需要为单个 CA 证书签名。客户端可能希望连接到各种安全服务器,因此在其配置中通常指定多个受信任 CA 的列表。
服务器配置
本节列出了需要在 OpenLDAP 服务器上的 /etc/openldap/ slapd.d/cn=config.ldif 文件中指定的 slapd 的全局配置指令,以建立 TLS。
虽然旧风格配置使用单个文件,但通常作为 /usr/local/etc/openldap/slapd.conf 安装,但新样式使用 slapd 后端数据库来存储配置。配置数据库通常位于 /usr/local/etc/openldap/slapd.d/ 目录中。
以下指令对建立 SSL 也有效:除了 TLS 指令外,您需要在服务器端启用专用于 SSL 的端口 - 通常为端口 636。为此,请编辑 /etc/sysconfig/slapd 文件,并将 ldaps:/// 字符串附加到通过 SLAPD_URLS 指令指定的 URL 列表中。
olcTLSCACertificateFile
The olcTLSCACertificateFile 指令指定包含可信 CA 证书的文件增强型邮件(PEM)模式。该指令采用以下形式:
olcTLSCACertificateFile: path
使用 CA 证书文件的路径替换 path
olcTLSCACertificatePath
The olcTLSCACertificatePath 指令指定在独立文件中包含独立 CA 证书的目录的路径。此目录必须特别使用 OpenSSL c_rehash 程序管理,该实用程序生成指向实际证书文件的散列名称的符号链接。通常,使用 the olcTLSCACertificateFile 指令更为简单。
该指令采用以下形式:
olcTLSCACertificatePath: path
使用包含 CA 证书文件的目录的路径替换 path。指定的目录必须使用 OpenSSL c_rehash 工具进行管理。
olcTLSCertificateFile
olcTLSCertificateFile 指令指定包含 slapd 服务器证书的文件。该指令采用以下形式:
olcTLSCertificateFile: path
使用 slapd 服务的服务器证书文件的路径替换 path
olcTLSCertificateKeyFile
The olcTLSCertificateKeyFile 指令指定包含与使用 olcTLSCertificateFile 指定的文件中存储的证书匹配的文件。请注意,当前实施不支持加密私钥,因此必须对包含的文件进行足够的保护。该指令采用以下形式:
olcTLSCertificateKeyFile: path
使用私钥文件的路径替换 path
客户端配置
在客户端系统的 /etc/openldap/ldap.conf 配置文件中指定以下指令。大多数指令与服务器配置选项并行。/etc/openldap/ldap.conf 中的指令是根据系统范围配置的,但单个用户可能会在其 ~/.ldaprc 文件中覆盖它们。
相同的指令可用于建立 SSL 连接。在 OpenLDAP 命令中,必须使用 ldaps:// 字符串而不是 ldap://这会强制 命令对服务器上配置的 SSL(端口 636)使用默认端口。
TLS_CACERT
TLS_CACERT 指令指定包含客户端要识别的所有证书颁发机构的证书的文件。这等同于服务器上的 olcTLSCACertificateFile 指令。TLS_CACERT 应始终在 /etc/openldap/ldap.conf 中的 TLS_CACERTDIR 之前指定。该指令采用以下形式:
TLS_CACERT path
使用 CA 证书文件的路径替换 path
TLS_CACERTDIR
TLS_CACERTDIR 指令指定在单独的文件中包含证书颁发机构证书的目录的路径。与服务器上的 olcTLSCACertificatePath 一样,指定的目录必须使用 OpenSSL c_rehash 程序进行管理。
TLS_CACERTDIR directory
使用包含 CA 证书文件的目录的路径替换 directory
TLS_CERT
TLS_CERT 指定包含客户端证书的文件。这个指令只能在用户的 ~/.ldaprc 文件中指定。该指令采用以下形式:
TLS_CERT path
使用客户端证书文件的路径替换 path
TLS_KEY
TLS_KEY 指定包含私钥的文件,该文件与使用 TLS_CERT 指令指定的文件中存储的证书匹配。与服务器上的 with olcTLSCertificateFile 一样,不支持加密的密钥文件,因此必须仔细保护文件本身。这个选项只能在用户的 ~/.ldaprc 文件中进行配置。
TLS_KEY 指令采用以下格式:
TLS_KEY path
使用客户端证书文件的路径替换 path

9.2.3.7. 设置复制

复制是指将更新从一个 LDAP 服务器(提供商)复制到一个或多个其他服务器或客户端(使用者)的过程提供程序向使用者复制目录更新,接收的更新可由使用者进一步传播到其他服务器,因此使用者也可以同时充当提供程序。此外,使用者不必是 LDAP 服务器,它可能只是 LDAP 客户端。在 OpenLDAP 中,您可以使用多种复制模式,最显著的是 镜像同步。如需有关 OpenLDAP 复制模式的更多信息,请参阅 OpenLDAP 软件管理员指南的 openldap-servers 软件包(请参阅 “安装的文档”一节)。
要启用所选复制模式,请在供应商和消费者上使用 /etc/openldap/slapd.d/ 中的以下指令之一。
olcMirrorMode
The olcMirrorMode 指令启用镜像复制模式。它采用以下形式:
olcMirrorMode on
这个选项需要在供应商和消费者上指定。此外,还必须指定 serverIDsyncrepl 选项。在 18.3.4 中查找详细示例。MirrorMode OpenLDAP 软件管理员指南 一节(请参阅 “安装的文档”一节)。
olcSyncrepl
The olcSyncrepl 指令启用同步复制模式。它采用以下形式:
olcSyncrepl on
同步复制模式需要提供程序和使用者具有特定的配置。这个配置在 18.3.1 中进行了全面描述。OpenLDAP 软件管理员指南 中的 Syncrepl 部分(请参阅 “安装的文档”一节)。

9.2.3.8. 加载模块和后端

您可以使用动态加载的模块增强 slapd 服务。在配置 slapd 时,必须使用 --enable-modules 选项启用这些模块的支持。模块存储在使用 .la 扩展名的文件中:
module_name.la
后端 存储或检索数据以响应 LDAP 请求。后端可以静态编译到 slapd 中,或者在启用模块支持时进行动态加载。在后一种情况下,应用以下命名规则:
back_backend_name.la
要载入模块或后端,请在 /etc/openldap/slapd.d/ 中使用以下指令:
olcModuleLoad
The olcModuleLoad 指令指定要加载的可动态加载的模块。它采用以下形式:
olcModuleLoad: module
此处,模块 表示要加载的模块或后端的文件。

9.2.4. 使用 LDAP 的应用程序的 SELinux 策略

SELinux 是在 Linux 内核中强制访问控制机制的一种实施。默认情况下,SELinux 会阻止应用访问 OpenLDAP 服务器。要通过 LDAP 启用身份验证(被多个应用程序需要),需要启用 allow_ypbind SELinux 布尔值。某些应用程序还需要在这种情况下启用的 authlogin_nsswitch_use_ldap 布尔值。执行以下命令启用上述布尔值:
~]# setsebool -P allow_ypbind=1
~]# setsebool -P authlogin_nsswitch_use_ldap=1
P 选项使 此设置在系统重启后持久保留。有关 SELinux 的详情,请参阅 Red Hat Enterprise Linux 7 SELinux 用户和管理员指南

9.2.5. 运行 OpenLDAP 服务器

这部分论述了如何启动、停止、重启和检查 独立 LDAP 守护进程 的当前状态。有关如何一般管理系统服务的更多信息,请参阅《 系统管理员指南》中的使用 systemd 管理服务

9.2.5.1. 启动服务

要在当前会话中启动 slapd 服务,以 root 用户身份在 shell 提示符后输入以下内容:
~]# systemctl start slapd.service
要将服务配置为在引导时自动启动,请以 root 用户身份运行以下命令:
~]# systemctl enable slapd.service
ln -s '/usr/lib/systemd/system/slapd.service' '/etc/systemd/system/multi-user.target.wants/slapd.service'

9.2.5.2. 停止服务

要在当前会话中停止正在运行的 slapd 服务,以 root 用户身份在 shell 提示符后输入以下内容:
~]# systemctl stop slapd.service
要防止服务在引导时自动启动,以 root 用户身份键入:
~]# systemctl disable slapd.service
rm '/etc/systemd/system/multi-user.target.wants/slapd.service'

9.2.5.3. 重启服务

要重启正在运行的 slapd 服务,在 shell 提示符后输入以下内容:
~]# systemctl restart slapd.service
这将停止 服务,并立即重新启动该服务。使用此命令重新加载配置。

9.2.5.4. 验证服务状态

要验证 slapd 服务是否正在运行,在 shell 提示符后输入以下内容:
~]$ systemctl is-active slapd.service
active

9.2.6. 使用 OpenLDAP 将系统配置为验证

若要将系统配置为使用 OpenLDAP 进行身份验证,请确保在 LDAP 服务器和客户端计算机上都安装了相应的软件包。有关如何设置服务器的详情,请按照 第 9.2.2 节 “安装 OpenLDAP 套件”第 9.2.3 节 “配置 OpenLDAP 服务器” 中的说明进行操作。在客户端中,在 shell 提示符后输入以下内容:
~]# yum install openldap openldap-clients nss-pam-ldapd

9.2.6.1. 将旧身份验证信息迁移到 LDAP 格式

migrationtools 软件包提供了一组 shell 和 Perl 脚本,可帮助您将身份验证信息迁移到 LDAP 格式。要安装这个软件包,在 shell 提示符后输入以下内容:
~]# yum install migrationtools
这会将脚本安装到 /usr/share/migrationtools/ 目录中。安装后,编辑 /usr/share/migrationtools/migrate_common.ph 文件并更改以下行以反映正确的域,例如:
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "example.com";

# Default base
$DEFAULT_BASE = "dc=example,dc=com";
或者,您也可以直接在命令行中指定环境变量。例如,要运行 migrate_all_online.sh 脚本,并将默认基础设置为 dc=example,dc=com,请输入:
~]# export DEFAULT_BASE="dc=example,dc=com" \
/usr/share/migrationtools/migrate_all_online.sh
要决定运行哪个脚本来迁移用户数据库,请参阅 表 9.8 “常用的 LDAP 迁移脚本”
表 9.8. 常用的 LDAP 迁移脚本
现有名称服务 LDAP 是否正在运行? 脚本使用
/etc flat 文件 migrate_all_online.sh
/etc flat 文件 migrate_all_offline.sh
NetInfo migrate_all_netinfo_online.sh
NetInfo migrate_all_netinfo_offline.sh
NIS(YP) migrate_all_nis_online.sh
NIS(YP) migrate_all_nis_offline.sh
有关如何使用这些脚本的更多信息,请参阅 /usr/share/doc/migrationtools-version/ 目录中的 READMEmigration-tools.txt 文件。

9.2.7. 其它资源

以下资源提供有关轻量级目录访问协议的额外信息。在系统上配置 LDAP 之前,强烈建议您查阅这些资源,尤其是 OpenLDAP 软件管理员指南

安装的文档

以下文档随 openldap-servers 软件包一起安装:
  • /usr/share/doc/openldap-servers-版本/guide.html - OpenLDAP 软件管理员指南 的副本。
  • /usr/share/doc/openldap-servers-版本/README.schema - 包含已安装模式文件描述的 README 文件。
另外,还安装 openldapopenldap-serversopenldap-clients 软件包的 man page:
客户端应用程序
  • ldapadd(1) - ldapadd 命令的手册页描述了如何在 LDAP 目录中添加条目。
  • ldapdelete(1) - ldapdelete 命令的手册页描述了如何删除 LDAP 目录中的条目。
  • ldapmodify(1) - ldapmodify 命令的手册页描述了如何修改 LDAP 目录中的条目。
  • ldapsearch(1) - ldapsearch 命令的手册页描述了如何搜索 LDAP 目录中的条目。
  • ldappasswd(1) - ldappasswd 命令的手册页描述了如何设置或更改 LDAP 用户的密码。
  • ldapcompare(1) - 描述如何使用 ldapcompare 工具。
  • ldapwhoami(1) - 描述如何使用 ldapwhoami 工具。
  • ldapmodrdn(1) - 描述如何修改条目的 RDNs。
服务器应用程序
  • slapd(8C) - 描述 LDAP 服务器的命令行选项。
管理应用程序
  • slapadd(8C) - 描述用于在 slapd 数据库中添加条目的命令行选项。
  • slapcat(8C) - 描述用于从 slapd 数据库生成 LDIF 文件的命令行选项。
  • slapindex(8C) - 描述用于根据 slapd 数据库的内容重新生成索引的命令行选项。
  • slappasswd(8C) - 描述用于为 LDAP 目录生成用户密码的命令行选项。
配置文件
  • ldap.conf(5) - ldap.conf 文件的手册页描述了 LDAP 客户端配置文件中可用的格式和选项。
  • slapd-config(5) - 描述 /etc/openldap/slapd.d 配置目录中可用的格式和选项。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.