从 2.3 开始,OpenLDAP 使用名为 slapd-config 的配置引擎。他们说使用它可以即时更改所有 LDAP 配置。
这是 /etc/ldap/slapd.d/cn=config.ldif 的标题:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
我已经更改了其中的数据和其他一些具有该标头的文件,在重新启动 slapd 后,我的更改生效了。
如果我手动更改这些文件,还会发生其他情况吗?如果我不需要“即时更改”,我应该手动编辑这些文件而不是使用 ldapmodify 吗?哪个应用程序生成了这些文件,什么时候生成的?
注意:我在 Ubuntu 12.04 上使用 openldap-2.4.28
如果您手动更改 cn=config 中的 LDIF 文件,它们的内容和校验和将不匹配,这不是致命的,但在使用slapcat等工具时会很烦人。
使用ldapmodify以正确的方式修改 cn=config是非常痛苦的,您最终会积累大量手工精心制作的、单一用途的一次性 LDIF 文件。与仅仅编辑 slapd.conf 相比,这是一场噩梦。无论如何,如果您需要更改运行时配置,ldapmodify是您唯一的选择。但是,如果您能承受一些停机时间,您还有另外两种毒药可供选择。
首先,如果您知道自己在做什么,则有一种不受支持但快速且肮脏的方法,它适用于初始 OpenLDAP 配置:
如果 slapd 启动,它应该可以正常工作,但在启动服务时跟踪 /var/log/syslog总是一个好主意:
您可以使用slapcat和slapadd修复校验和错误,如下所述。
其次,有一种不太受支持的方法涉及使用slapcat和slapadd(根据这些说明修改):
如果 slapadd 成功且没有错误,您可以迁移到修改后的 slapd.d 目录。根据这个线程 slapadd只添加数据,所以覆盖原来的 slapd.d 目录内容是不可能的。因此我们需要稍微移动一下目录:
这两个或多或少不受支持的方法使 cn=config 的生活稍微更容易忍受。
当你看到一个文件说
您最好按照有关如何正确更改该文件内容的说明进行操作。
在这种情况下,这意味着根据 OpenLDAP 手册使用命令更新 OpenLDAP 配置。
ldapmodify
这允许您即时将更改应用到 OpenLDAP 配置,并将重新生成
slapd.conf
文件(在启动 LDAP 服务器时作为引导配置使用)一般来说,不遵守指示(例如“不要编辑此文件,因为它是自动生成的!”)会导致痛苦和折磨。
在这种特殊情况下,你可能会发现你对文件的更改在下次有人以正确的方式做事时被清除,你将不得不重建你的配置(可能没有它的记录,因为你编辑的文件将是更换)。
下次您不注意这样的警告时,您可能会导致系统无法启动,甚至更糟。