slapd-sock / slapo-sock / back-sock 的 LDAP 配置

slapd-sock / slapo-sock / back-sock 的 LDAP 配置

当前系统:CentOS 7.9,OpenLDAP 2.4

我想在我的 LDAP 操作中实现一个“钩子”,这样当 ldapadd 或 ldapmodify 操作发生时,就会运行一个脚本此外正常的数据库操作。从我的网络搜索来看,LDAP 似乎具有“套接字覆盖”机制,我看到它被称为slapd-sockslapo-sockback-sock。(这些都是同一件事吗,还是我错过了一个重要的区别?)

以下是来自旧帖子问题打算添加到的行数slapd.conf

overlay sock
extensions binddn peername ssf connid
socketpath sockoverlay-listener
sockops modify add

到目前为止,我发现的所有示例和手册页都显示了要添加到的配置行slapd.conf。但是,我还看到它slapd.conf作为控制 LDAP 的一种手段即将消失。我想设置一些稳定的东西,特别是因为我知道我将在年底前升级到 AlmaLinux 9.1 和 OpenLDAP 2.6。

我的问题是:如何在 LDIF 文件中指定上述选项?请注意,我不是在问如何使用该ldapmodify命令。我是在问如何从上述slapd.conf配置中得出适当的 cn、objectClass 和属性,以放入 LDIF 文件中以启用back-sock(或任何名称)?

我知道这是可能的,因为 OpenLDAP 发行说明指出了对控制套接字覆盖的修复cn=config,但我找不到任何有关如何执行此操作的示例。

答案1

我找到了我的问题的答案,或者更确切地说,我找到了如何找到我的问题的答案的方法。

学习 LDAP cn=config cn、objectClass 和任何给定 slapd.conf 配置的属性的关键是创建一个虚拟slapd.conf文件,然后使用slaptest

就我而言,我创建了一个slap-mod.conf

include         /etc/openldap/schema/core.schema
database  hdb
suffix "dc=myoffice,dc=mycompany,dc=org"
rootdn "cn=Manager,dc=myoffice,dc=mycompany,dc=org"

modulepath /usr/lib64/openldap
moduleload back_sock.la

overlay sock
extensions binddn peername ssf connid
socketpath sockoverlay-listener
sockops modify add

我需要有足够的数据库定义以使 slaptest 不发出抱怨。

然后我就跑了

mkdir -p /tmp/slapd
slaptest -u -f slapd-mod.conf -F /tmp/slapd

当我查看/tmp/slapd/cn=config/目录时,我看到了我需要的语句。我还没有尝试过,但看起来我需要两个 LDIF 文件,在从 slaptest 中删除通常的 {0} 并对 dn 进行一些调整后:

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: back_sock.la
dn: olcOverlay=sock,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcOvSocketConfig
olcOverlay: sock
olcDbSocketPath: sockoverlay-listener
olcDbSocketExtensions: binddn
olcDbSocketExtensions: peername
olcDbSocketExtensions: ssf
olcDbSocketExtensions: connid
olcOvSocketOps: modify
olcOvSocketOps: add

编辑

在我弄清楚并尝试了上述方法后,我最终“破坏”了我的 LDAP 服务器:它不再接受修改命令。显然,这与我尚未实际提供后端脚本有关。

然而,事实证明,虽然添加这样的行很容易dn: olcOverlay=sock,olcDatabase={2}hdb,cn=config,但我无法删除它;这是否是由于配置back-sock还是其他原因,我说不上来。我不得不从备份中恢复整个 LDAP 配置和数据库。

教训:仅仅因为你通过做某事cn=config并不意味着你应该通过 做一些事情cn=config。我最好坚持下去slapd.conf(假设该文件在 CentOS7/OpenLDAP2.4 中仍然有效),这样配置更改就很容易撤消。

当它最终被彻底淘汰时会如何运作slapd.conf,谁也说不准。

相关内容