我正在尝试在 Arch Linux 上配置新安装的 OpenLDAP (2.6.39)。我使用默认的核心包来安装和配置它,但是我无法让它遵守设置文件中的任何访问控制声明。
我/etc/openldap/slapd.conf
只有从文档中得到的这两个声明:
access to attr=userPassword
by self =xw
by anonymous auth
by * none
access to *
by self write
by users read
by * none
我已经正常启动了该服务,并且大多数事情似乎都可以正常工作。我可以使用 pam/nslcd 登录并使用 phpldapadmin。但是,上述访问限制似乎不起作用。从 phpldapadmin 中,我能够查看和更改与我连接的 uid 以外的用户的密码字段。使用命令行客户端也会发生同样的情况(输出裁剪):
$ ldapsearch -D 'uid=user2,ou=People,dc=example,dc=com' -w 1234 '(uid=user1)'
userPassword:: e1NTSEF9VEZ4K2U1M0JtUEU0NkljdlBPaTBycE41RTh2aXJNeTg=
如您所见,我正在使用 user2 进行身份验证,但能够查询 user1 的条目并查看密码字段。
中的其他声明slapd.conf
显然有效,所以我没有编辑错误的文件或类似的东西。我尝试将严格的规则设置access to * by * none
为唯一规则,但我仍然能够从任何用户那里看到目录中的任何内容。我将接入线路放置在示例线路所在的默认配置中。
如何让 OpenLDAP 真正注意其配置文件中的 acl 而不是忽略它们?
OpenLDAP 的大部分配置(包括 ACL)确实属于
cn=config
配置子树。有可能你有一些东西会覆盖你在slapd.conf
. 请参阅此文档以了解配置 LDAP 服务器的现代方式。作为一种过渡措施,OpenLDAP 的Arch Linux 软件包附带了一个
slapd.conf
文件,但是如果您按照他们的 wiki 上的说明进行操作,您会在设置部分的末尾发现他们会自动将其转换为新格式。特别注意最后的那一行。如果您选择以旧格式进行未来的配置更改,则每次都需要转换它们。