我设置了一些服务器,我想集中访问使用 LDAP 的用户。我的主服务器使用 iRedMail 托管电子邮件,并且恰好有一个使用 iRedMail 设置的 LDAP 数据库。现在,我希望将我的用户帐户绑定到他们的电子邮件帐户(例如,更改他们的电子邮件密码也会更改他们有权访问的服务器上的密码)。我已经进行了一些搜索(DuckDuckGoing?),以了解如何使用 iRedMail 的 LDAP 数据库作为 UNIX 帐户的用户身份验证数据库,但我还没有找到任何远程有用的东西。有人做过这个有什么提示吗?
所以,我想通了。这是我如何完成它的快速而肮脏的指南:
首先,iRedMail 在安装时会自动生成 SSL 证书。如果您的主机名不是您想要的证书 CN,那么您将需要生成一个新的 SSL 证书。实际上,无论如何我都会这样做。以下是如何完成第一步:
现在我们需要生成我们的 SSL 证书:
在这一点上,我重新启动了我的系统。对我来说,这比重新启动一堆服务更容易。
现在,在我们迁移到 LDAP 客户端之前,我们需要对 LDAP 服务器进行一些更改。我们要做的第一个更改是将 unixHomeDirectory 添加到 posixAccount 对象类。原因:我不希望我的用户被困在 iRedMail 与其帐户关联的 homeDirectory 中。
现在我们将为我们的用户添加一个 obMemberOf 属性。这将在稍后与 sssd 一起使用。
我对 /etc/openldap/slapd.conf 进行了以下更改
现在我去了https://www.mydomain.com/iredadmin并添加了一个用户。添加用户后,ldapsearch 返回以下内容:
正如我们所看到的,使它成为 posixAccount 的一切都丢失了。所以,这就是我们要做的:
我们运行 ldapmodify 将属性添加到帐户
现在我创建一个 LDAP 组。
将 user1 添加为开发者组的 obMemberOf
此时我们有 user1、两个自定义属性(obMemberOf、unixHomeDirectory)和一个供开发人员使用的 LDAP 组。现在是设置几个客户端的时候了。我设置的第一个客户端运行的是 Ubuntu 12.04 服务器。以下是该客户的步骤:
我设置的下一个客户端是运行 sssd 的 CentOS 6.4 服务器。
以下是我在此过程中遇到的一些错误以及我为修复每个错误所做的工作。
这就是我在服务器上添加 LDAP 组和 obMemberOf 属性的原因。然后我在 sssd 客户端上将它用作我的 ldap_access_filter(即,将属性 obMemberOf 设置为开发组的 DN 的任何人都可以访问系统。
运行 'cacertdir_rehash /etc/openldap/cacerts/' 似乎可以解决问题。它创建了一个指向 iRedMail_CA.pem 的符号链接(带有数字后缀的证书哈希)
我遇到了很多其他错误(大量“无效凭据”、“访问被拒绝”和其他与访问相关的错误)。我稍后会更新它以涵盖它们。
我想知道您是否可以将 sssd 配置为使用灵活的 ldap 过滤器并在这种情况下查找不同的(非默认)ldap 属性。
如果您修改了 iRedMail LDAP 架构文件,您应该注意将此架构与上游同步。