我一直在 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.
迁移到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
Run Code Online (Sandbox Code Playgroud)
最重要的是文件olcDatabase={1}bdb.ldif,olcDatabase={0}config.ldif其中包括两个数据库后端的配置:bdb- 我的主要 ldap 基础和config用于动态修改slapd配置的虚拟数据库。
每个数据库都有自己的密码和在 ldif 文件中配置的 root 用户。根用户和密码由以下属性定义:
olcRootDN: cn=Manager,cn=config
olcRootPW:: c2VjcmV0
Run Code Online (Sandbox Code Playgroud)
所以第一种更改密码的方法就是更改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)
Run Code Online (Sandbox Code Playgroud)
因此,如果您编辑数据库文件,它就完成了(我不确定slapd在编辑 ldif 文件时是否可能正在运行 - 停止它更安全)...但还有另一种选择...;)
如果您启用了config数据库,您可以使用任何 ldap 客户端绑定到它(我推荐Apache Directory Studio,它是非常棒的 ldap 客户端/编辑器)。当然,要绑定到该数据库,您必须了解olcRootDN并olcRootPW为该后端配置。在这种情况下 BaseDN 必须设置为cn=config. 连接后用户名和密码在olcDatabase={1}bdb,cn=config.