我一直在 RHEL 6 上配置 OpenLDAP,您似乎已运行以下命令来重建配置目录。我对此表示同意,但我的问题是,假设我想更改服务器密码,每次更改配置时是否都必须经历整个过程?使用 RHEL6 方法构建 slapd 配置后,有没有办法更改它的配置?
以下是我的建议在网上找到的。
此示例假设要从旧 slapd 配置转换的文件位于 /etc/openldap/slapd.conf,OpenLDAP 配置的新目录位于 /etc/openldap/slapd.d/。删除新的 /etc/openldap/slapd.d/ 目录的内容:
rm -rf /etc/openldap/slapd.d/*
运行 slaptest 检查配置文件的有效性并指定新的配置目录: slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
配置新目录的权限: chown -R ldap:ldap /etc/openldap/slapd.d
chmod -R 000 /etc/openldap/slapd.d
chmod -R u+rwX /etc/openldap/slapd.d
澄清一下:我正在寻求有关如何使用较新版本的 openldap 编辑 slapd 配置的帮助,其中配置保存在架构中而不是原始的slapd.conf
.
答案1
迁移到slapd.d
配置目录后,slapd.conf
文件将转换为几个 LDIF 文件。
对于配置的每个数据库,slapd.conf
现在都有新的 ldif 文件slapd.d/cn=config/
。该文件的名称由olcDatabase={Number}NameOfDatabase.ldif
.
下面是slapd.d
我的案例的结构(在 Debian 上):
slapd.d/
├── cn=config
│ ├── cn=module{0}.ldif
│ ├── cn=schema
│ │ └── cn={0}core.ldif
│ ├── cn=schema.ldif
│ ├── olcDatabase={0}config.ldif
│ ├── olcDatabase={1}bdb.ldif
│ └── olcDatabase={-1}frontend.ldif
└── cn=config.ldif
最重要的是文件olcDatabase={1}bdb.ldif
,olcDatabase={0}config.ldif
其中包括两个数据库后端的配置:bdb
- 我的主要 ldap 基础和config
用于动态修改slapd
配置的虚拟数据库。
每个数据库都有自己的密码和 root 用户,这些密码和 root 用户在 ldif 文件中配置。 root 用户和密码由以下属性定义:
olcRootDN: cn=Manager,cn=config
olcRootPW:: c2VjcmV0
所以更改密码的第一种方法就是更改 的值olcRootPW
。在该示例中,密码设置为 wordsecret
并由 base64 编码。
我们可以将olcRootPW
线路更改为:
olcRootPW: plaintextpassword
olcRootPW:: base64decodedtext (in base64 method there is double `:` after attribute name)
olcRootPW: {SSHA}8IAb01fZAtNBH5F0n4x5t2WkmQbhZnWm (SSHA encoded password generated by `slappaswd` command)
因此,如果您编辑数据库文件,它就完成了(我不确定slapd
当您编辑 ldif 文件时是否可能正在运行 - 停止它更安全)...但还有另一种选择...;)
如果您已启用config
数据库,则可以使用任何 ldap 客户端绑定到它(我推荐Apache 目录工作室这是非常棒的 LDAP 客户端/编辑器)。当然,为了绑定到该数据库,您必须了解olcRootDN
并olcRootPW
配置该后端。在这种情况下,BaseDN 必须设置为cn=config
。连接后用户名和密码是olcDatabase={1}bdb,cn=config
.