2.2. Directory Server 实例特定的文件和目录
要分隔在同一主机上运行的多个实例,某些文件和目录包含实例的名称。您可以在 Directory 服务器设置过程中设置实例名称。默认情况下,这是没有域名的主机名。例如,如果您的完全限定域名是 server.example.com
,则默认实例名称是 server
。
以下是 Directory 服务器实例的特定默认文件和目录位置:
类型 | 位置 |
---|---|
备份文件 |
|
配置文件 |
|
证书和密钥数据库 |
|
数据库文件 |
|
LDIF 文件 |
|
锁定文件 |
|
日志文件 |
|
PID 文件 |
|
systemd 单元文件 |
|
2.2.1. 配置文件
每个目录服务器实例将其配置文件存储在 /etc/dirsrv/slapd-实例
目录中。
红帽目录服务器的配置信息作为 LDAP 条目存储在目录本身中。因此,必须通过使用服务器本身而不是简单的编辑配置文件来实施对服务器配置的更改。这种配置存储方法的主要优点是,它允许目录管理员在仍然运行时使用 LDAP 重新配置服务器,从而避免需要关闭服务器进行大多数配置更改。
2.2.1.1. 目录服务器配置概述
设置目录服务器时,其默认配置将作为目录中的一系列 LDAP 条目存储在子树 cn=config
下。当服务器启动时,cn=config
子树的内容将从 LDIF 格式的文件(dse.ldif
)中读取。此 dse.ldif
文件包含所有服务器配置信息。此文件的最新版本称为 dse.ldif
,上次修改之前的版本称为 dse.ldif.bak
,并且成功启动服务器的最新文件名为 dse.ldif.startOK
。
目录服务器的许多特性都设计为插入核心服务器的离散模块。每个插件的内部配置详情包含在 cn=plugins,cn=config
下的单独条目中。例如,此条目中包含 Telephone Syntax 插件的配置:
cn=Telephone Syntax,cn=plugins,cn=config
同样,特定于数据库的配置存储在
cn=ldbm database,cn=plugins,cn=config
用于本地数据库,cn=chaining database,cn=plugins,cn=config
用于数据库链接。
下图说明了配置数据如何在 cn=config
目录树中容纳。
图 2.1. 目录信息树显示配置数据
2.2.1.1.1. LDIF 和 Schema 配置文件
目录服务器配置数据存储在 /etc/dirsrv/slapd-instance
目录中的 LDIF 文件中。因此,如果服务器标识符是 电话手册
,然后对于目录服务器,配置 LDIF 文件都存储在 /etc/dirsrv/slapd-phonebook
下。
此目录还包含其他服务器实例特定的配置文件。
模式配置也以 LDIF 格式存储,这些文件位于 /etc/dirsrv/schema
目录中。
下表列出了 Directory 服务器提供的所有配置文件,包括用于其他兼容服务器模式的配置文件。每个文件的前面都有一个数字,表示应加载它们的顺序(按升序,然后按字母顺序排列)。
配置文件名称 | 用途 |
---|---|
dse.ldif |
包含服务器启动时由目录创建的前端目录特定条目。这包括 Root DSE ( |
00core.ldif |
仅包含使用裸机最小功能集启动服务器所需的架构定义(无用户模式,没有任何非核心功能)。用户、功能和应用程序使用的其他模式位于 |
01common.ldif |
包含 LDAPv3 标准操作模式,如 |
05rfc2247.ldif | 来自 RFC 2247 和相关试用方案的 schema,来自"使用 LDAP/X500 区分名称中的域"。 |
05rfc2927.ldif |
RFC 2927 的 schema,"MIME Directory Profile for LDAP Schema."包含在 |
10presence.ldif | 传统.用于即时消息存在(online)信息; 文件列出了具有必须添加到用户条目的允许属性的默认对象类,以便即时消息传递存在信息可供该用户使用。 |
10rfc2307.ldif |
RFC 2307 中的模式,"使用 LDAP 作为网络信息服务的方法"。当该模式可用时,可能会将其替换为 |
20subscriber.ldif |
包含新的模式元素和 Nortel 订阅者互操作性规格。还包含 |
25java-object.ldif | RFC 2713 的 schema,"代表 LDAP 目录中 Java® 对象的Schema"。 |
28pilot.ldif |
包含来自 RFC 1274 的 pilot 目录模式,该模式不再建议在新部署中使用。成功的 RFC 1274 的未来 RFC 可能会弃用部分或所有 |
30ns-common.ldif | 包含目录服务器控制台框架的通用对象类和属性的 schema。 |
50ns-admin.ldif | 红帽管理服务器使用的 schema。 |
50ns-certificate.ldif | 红帽公司证书管理系统的 schema。 |
50ns-directory.ldif | 包含 Directory Server 4.12 和更早的版本使用的额外配置模式,它们不再适用于 Directory Server 的当前版本。在 Directory Server 4.12 和当前版本之间复制此模式是必需的。 |
50ns-mail.ldif | Netscape 消息传递服务器用来定义邮件用户和邮件组的 schema。 |
50ns-value.ldif | 服务器值项目属性的 schema。 |
50ns-web.ldif | Netscape Web 服务器的 schema。 |
60pam-plugin.ldif | 保留以备将来使用。 |
99user.ldif | Directory Server 复制消费者维护的用户定义的模式,其中包含来自供应商的属性和对象类。 |
2.2.1.1.2. 服务器配置如何组织
dse.ldif
文件包含所有配置信息,包括由目录在服务器启动时创建的特定于目录的条目,如与数据库相关的条目。该文件包含 root Directory Server 条目(或 DSE,由 ""
命名)以及 cn=config
和 cn=monitor
的内容。
当服务器生成 dse.ldif
文件时,它会以分级顺序列出条目,其顺序是 cn=config
下的目录中出现的顺序,其通常与基本 cn=config
的子树范围的 LDAP 搜索返回条目的顺序相同。
DSE.ldif
还包含 cn=monitor
条目,它是只读的,但可以在其上设置 ACI。
dse.ldif
文件不包含 cn=config
中的每个属性。如果管理员尚未设置属性,并且具有默认值,服务器不会将它写入到 dse.ldif
。要查看 cn=config
中的每个属性,请使用 ldapsearch
。
配置属性
在配置条目中,每个属性都以属性名称表示。属性的值对应于属性的配置。
以下代码示例是 Directory 服务器的 dse.ldif
文件的一部分示例。除了其他方面,还显示架构检查已启用;这由属性 nsslapd-schemacheck
表示,它将采用 的值。
dn: cn=config objectclass: top objectclass: extensibleObject objectclass: nsslapdConfig nsslapd-accesslog-logging-enabled: on nsslapd-enquote-sup-oc: off nsslapd-localhost: phonebook.example.com nsslapd-schemacheck: on nsslapd-port: 389 nsslapd-localuser: dirsrv ...
配置插件功能
Directory Server 插件功能的每个部分的配置都有自己的单独的条目,以及子树 cn=plugins,cn=config
下的属性集。以下代码示例是示例插件(Telephone Syntax 插件)的配置条目示例。
dn: cn=Telephone Syntax,cn=plugins,cn=config objectclass: top objectclass: nsSlapdPlugin objectclass: extensibleObject cn: Telephone Syntax nsslapd-pluginType: syntax nsslapd-pluginEnabled: on
其中一些属性适用于所有插件,其中一些可能特定于特定插件。通过对 cn=config
子树执行 ldapsearch
,检查给定插件目前正在使用哪些属性。
有关目录服务器、常规插件配置信息、插件配置属性参考以及需要重启配置更改的插件列表,请参阅 第 4 章 插件实现的服务器功能参考。
配置数据库
数据库插件条目下的 cn=UserRoot
子树包含包含设置过程中创建的默认后缀的数据库的配置数据。
这些条目及其子项具有许多属性,用于配置不同的数据库设置,如缓存大小、索引文件和事务日志的路径、监控和统计信息的条目和属性;以及数据库索引。
配置索引
索引的配置信息作为以下 information-tree 节点下的目录服务器中的条目存储在 Directory 服务器中:
-
cn=index,cn=UserRoot,cn=ldbm database,cn=plugins,cn=config
-
cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config
有关索引的更多信息,请参阅 红帽目录服务器管理指南。有关索引配置属性的详情,请参考 第 4.4.1 节 “database Attributes in cn=config,cn=ldbm database,cn=plugins,cn=config”。
2.2.1.2. 访问和修改服务器配置
本节讨论配置条目的访问控制,并描述了查看和修改服务器配置的各种方法。它还涵盖了可以进行的修改类型的限制,并讨论需要重启服务器以使更改生效的属性。
2.2.1.2.1. 配置条目的访问控制
安装 Directory Server 时,为 cn=config
下的所有条目实施一组默认的访问控制指令(ACI)。以下代码示例是这些默认的 ACI 的示例。
aci: (targetattr = "*")(version 3.0; acl "Local Directory Administrators Group"; allow (all) groupdn = "ldap:///ou=Directory Administrators,dc=example,dc=com";)
这些默认 ACI 允许由以下用户在所有配置属性上执行所有 LDAP 操作:
- Configuration Administrators 组的成员。
-
充当管理员的用户,这是在 setup 中配置的
admin
帐户。默认情况下,这是登录到控制台的用户帐户。 - 本地 Directory Administrators 组的成员.
-
SIE (服务器实例条目)组通常使用
Set Access Permissions
进程分配。
有关访问控制的更多信息,请参阅 红帽目录服务器管理指南。
2.2.1.2.2. 更改配置属性
可以通过以下三种方法之一查看和更改服务器属性:通过 Directory Server 控制台、执行 ldapsearch
和 ldapmodify
命令,或者手动编辑 dse.ldif
文件。
在编辑 dse.ldif
文件之前,服务器 必须停止 ;否则,更改将会丢失。只有在无法动态更改的属性中,才建议编辑 dse.ldif
文件。详情请查看 Requiring Server Restart 的配置更改。
以下小节介绍了如何使用 LDAP 修改条目(使用 Directory Server Console 和 使用命令行),对修改条目的限制、应用属性的限制以及需要重启的配置更改。
使用 LDAP 修改配置条目
可以使用 Directory Server Console 或执行 ldapsearch
和 ldapmodify
操作的方式与其它目录条目一样,使用 LDAP 搜索和修改目录中的配置条目。使用 LDAP 修改条目的好处是在服务器运行时更改。
如需更多信息,请参阅红帽目录服务器管理指南中的"创建 目录条目"章节。但是,某些更改要求在服务器考虑之前重新启动服务器。详情请查看 Requiring Server Restart 的配置更改。
与任何一组配置文件一样,在更改或删除 cn=config
子树中的节点时应小心,因为这会影响目录服务器功能的风险。
通过在 cn=config
子树上执行 ldapsearch
操作来查看整个配置,包括始终获取默认值的属性:
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -b "cn=config" -s sub -x "(objectclass=*)"
-
bindDN 是安装服务器时为目录管理器选择的 DN (默认为
cn=Directory Manager
)。 - password 是为目录管理器选择的密码。
要禁用插件,请使用 ldapmodify
来编辑 nsslapd-pluginEnabled
属性:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=Telephone Syntax,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
修改配置条目和属性的限制
修改服务器条目和属性时应用某些限制:
-
cn=monitor
条目及其子条目是只读的,除了管理 ACI 外,无法修改。 -
如果属性添加到
cn=config
,服务器会忽略它。 - 如果为属性输入无效的值,服务器会忽略它。
-
因为
ldapdelete
用于删除整个条目,因此请使用ldapmodify
从条目中删除属性。
Requiring Server Restart 的配置更改
服务器运行时无法更改一些配置属性。在这些情况下,为了使更改生效,需要关闭并重新启动服务器。该修改应通过 Directory Server 控制台或手动编辑 dse.ldif
文件进行。下面列出了一些需要服务器重启以使更改生效的属性。这个列表并不完整;要查看完整的列表,请运行 ldapsearch
并搜索 nsslapd-requiresrestart
属性。例如:
# ldapsearch -D "cn=Directory Manager" -W -p 389 -h server.example.com -b "cn=config" -s sub -x "(objectclass=*)" | grep nsslapd-requiresrestart
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[a]
虽然此属性需要重启,但它不会在搜索中返回。
|
删除配置属性
所有核心配置属性都存在,即使它们没有写入 /etc/dirsrv/slapd-instance-name/dse.ldif
文件,因为它们都有服务器使用的默认值。
有关删除核心配置属性和无法删除的属性列表的详情,请查看 Red Hat Directory Server Administration Guide 中的相应部分。
2.2.2. 数据库文件
每个目录服务器实例都包含 /var/lib/dirsrv/slapd-instance/db
目录,用于存储所有数据库文件。以下是 /var/lib/dirsrv/slapd-instance/db
目录内容的列表示例。
例 2.1. 数据库目录内容
db.001 db.002 __db.003 DBVERSION log.0000000001 userroot/
-
db.00x
文件 - 数据库内部使用,不应以任何方式移动、删除或修改。 -
log.xxxxxxxxxx
文件 - 用于存储每个数据库的事务日志。 -
DBVERSION
- 用于存储数据库版本。 -
userroot
- 存储在设置中创建的用户定义的后缀(用户定义的数据库),例如dc=example,dc=com
。
如果创建了新数据库(例如 testRoot
)以将目录树存储在新后缀下,则名为 testRoot
的目录也会出现在 /var/lib/dirsrv/slapd-instance/db
目录中。
以下是 userRoot
目录内容列表示例:
例 2.2. userroot 数据库目录内容
ancestorid.db DBVERSION entryrdn.db id2entry.db nsuniqueid.db numsubordinates.db objectclass.db parentid.db
userroot
子目录包含以下文件:
-
ancestorid.db
- 包含用来查找条目的 ID 等级的 ID 列表。 -
entrydn.db
- 包含完整 DN 列表,以查找任何 ID。 -
id2entry.db
- 包含实际的目录数据库条目。如果需要,可以从此重新创建所有其他数据库文件。 -
nsuniqueid.db
- 包含用于查找任何 ID 的唯一 ID 列表。 -
numsubordinates.db
- Contains ID,其具有子条目。 -
swig.db
- 包含具有特定对象类的 ID 列表。 -
parentid.db
- 包含用来查找父 ID 的列表。
2.2.3. LDIF 文件
LDIF 文件示例存储在 /var/lib/dirsrv/slapd-instance/ldif
目录中,用于存储与 LDIF 相关的文件。例 2.3 “LDIF 目录内容” 列出 /ldif
目录内容。
例 2.3. LDIF 目录内容
European.ldif Example.ldif Example-roles.ldif Example-views.ldif
-
欧洲.ldif
- 包含欧洲字符示例. -
example.ldif
- 是一个示例 LDIF 文件。 -
example-roles.ldif
- 是类似于Example.ldif
的示例 LDIF 文件,但它使用角色和服务类而不是组来为目录管理员设置访问控制和资源限制。
实例目录中由 db2ldif
或 db2ldif.pl
脚本导出的 LDIF 文件存储在 /var/lib/dirsrv/slapd-实例/ldif
中。
2.2.4. 锁定文件
每个目录服务器实例包含一个 /var/lock/dirsrv/slapd-instance
目录来存储与锁定相关的文件。以下是 锁定
目录内容列表示例。
例 2.4. 锁定目录内容
exports/ imports/ server/
锁定机制控制目录服务器进程可以一次运行多少个副本。例如,如果存在导入作业,则锁定放置在 import /
目录中,以防止任何其他 ns-slapd
(常规)、ldif2db
(另一个导入)或 db2ldif
(export)操作运行。如果服务器以正常方式运行,则 server/
目录中有一个锁定,这样可防止导入操作(但不导出操作),而如果导出操作存在导出操作,则 exports/
目录中的锁定允许正常的服务器操作,但会阻止导入操作。
可用的锁定数量可能会影响整个目录服务器的性能。锁定数量在 nsslapd-db-locks
属性中设置。性能调优指南 中介绍了这个 属性值。
2.2.5. 日志文件
每个目录服务器实例包含一个 /var/log/dirsrv/slapd-instance
目录来存储日志文件。以下是 /logs
目录内容列表示例。
例 2.5. 记录目录内容
access access.20200228-171925 errors access.20200221-162824 access.rotationinfo errors.20200221-162824 access.20200223-171949 audit errors.rotationinfo access.20200227-171818 audit.rotationinfo slapd.stats
-
访问
、审计和
错误日志
文件的内容取决于日志配置。 -
slapd.stats
文件是一个内存映射文件,它不能被编辑器读取。它包含由 Directory Server SNMP 数据收集组件收集的数据。此数据由 SNMP 子代理读取,以响应 SNMP 属性查询,并且与负责处理 Directory Server SNMP 请求的 SNMP 主代理通信。
第 7 章 日志文件参考 包含访问、错误和审计日志文件格式及其信息的可靠概述。
2.2.6. PID 文件
当服务器启动并运行时,slapd-serverID.pid
和 slapd-serverID.startpid
文件会在 /var/run/dirsrv
目录中创建。这两个文件都存储服务器的进程 ID。
2.2.7. 备份文件
每个目录服务器实例包含以下目录和文件来存储与备份相关的文件:
-
/var/lib/dirsrv/slapd-instance/bak
- This contains a directory dated with the instance, time and date of the database backup backup,如instance-2020_05_02_16_56_05/
,其中包含数据库备份副本。 -
/etc/dirsrv/slapd-instance/dse_original.ldif
- 这是安装时dse.ldif
配置文件的备份副本。