如果我手动更改/etc/ldap/slapd.d/cn=config.ldif是否有任何不好的事情发生?

从2.3开始,OpenLDAP使用一个名为slapd-config的configuration引擎。 他们说使用它可以使所有的LDAPconfiguration都可以立即改变。

这是/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相比,这是一场噩梦。 无论如何,如果您需要更改运行时configuration, ldapmodify是您唯一的select。 但是,如果你能承受一些停机时间,你还有其他两种毒药可供select。

首先,如果你知道你在做什么,那么这个高度不受支持,但又快又脏的方法对初始的OpenLDAPconfiguration来说工作得很好:

 $ service slapd stop $ cp -a /etc/ldap/slapd.d /etc/ldap/slapd.d.old <edit the LDIF files in /etC/ldap/slapd.d> $ service slapd start 

如果slapd启动,它应该可以正常工作,但启动服务时尾巴/ var / log / syslog总是一个好主意:

 $ tail -n 0 -f /var/log/syslog|grep slapd 

您可以使用slapcatslapadd修复校验和错误,如下所述。

其次,有一个不太受支持的方法 ,涉及使用slapcatslapadd (从这些说明修改):

 $ slapcat -n0 -F /etc/ldap/slapd.d > config.ldif <edit config.ldif> $ mkdir /etc/ldap/slapd.d.new $ slapadd -n0 -F /etc/ldap/slapd.d.new -l config.ldif 

如果slapadd没有错误成功,您可以迁移到修改后的slapd.d目录。 根据这个线程 slapadd只添加数据,所以覆盖原来的slapd.d目录是不可能的。 因此,我们需要将目录移动一下:

 $ service slapd stop $ mv /etc/ldap/slapd.d /etc/ldap/slapd.d.old $ mv /etc/ldap/slapd.d.new /etc/ldap/slapd.d $ chown -R openldap:openldap /etc/ldap/slapd.d $ service slapd start 

这两种或多或less的不受支持的方法使cn = config更加可以忍受。

当你看到一个文件说

 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 

你最好按照说明如何正确地更改该文件的内容

在这种情况下,这意味着通过使用符合OpenLDAP手册的ldapmodify命令来更新OpenLDAPconfiguration 。
这使您可以对OpenLDAPconfiguration进行实时更改,并重新生成slapd.conf文件(在启动LDAP服务器时用作引导configuration)


一般来说,不遵循指令(如“不要编辑这个文件,因为它是自动生成的!”)将导致痛苦和痛苦。

在这种情况下,您可能会发现在下一次有人以正确方式进行操作时,对文件所做的更改已被清除,而且必须重新构build您的configuration(可能没有logging,因为您编辑的文件将是代替)。
下一次你没有听到这样的警告,你可能会使系统无法启动,甚至更糟糕。