SUSE 中的 OpenLDAP ACL、Kerberos 配置

SUSE 中的 OpenLDAP ACL、Kerberos 配置

我正在手动使用 OpenLDAP 实现 Kerberos,并根据麻省理工学院文档,我必须手动设置这个 ACL:

access to dn.base=""
    by * read

access to dn.base="cn=Subschema"
    by * read

# Provide access to the realm container.
access to dn.subtree= "cn=EXAMPLE.COM,cn=krbcontainer,dc=example,dc=com"
    by dn.exact="cn=kdc-service,dc=example,dc=com" write
    by dn.exact="cn=adm-service,dc=example,dc=com" write
    by * none

# Provide access to principals, if not underneath the realm container.
access to dn.subtree= "ou=users,dc=example,dc=com"
    by dn.exact="cn=kdc-service,dc=example,dc=com" write
    by dn.exact="cn=adm-service,dc=example,dc=com" write
    by * none

access to *
    by * read

根据我所读的内容,我必须在 slapd.conf 中进行设置。

我认为 Suse 不使用 slapd.conf,所以我正在弄清楚应该如何添加这些条目。我完全陷入困境。

有人能帮助我吗?

太感谢了。

答案1

OpenLDAP 的最新版本使用 LDAP 本身来维护其配置。所有内容都包含在cn=config 子树在名为 的数据库中olcDatabase={0}config,cn=config。此数据库的访问权限通常授予本地用户在机器上。

为了修改配置,您首先必须找到主数据库名称:

ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(objectClass=olcDatabaseConfig)'

SASL EXTERNAL 方法检查运行该命令的用户的 uid 和 gid(因此您必须)。

一旦找到数据库名称(假设),您需要创建一个LDIF 格式的dn: olcDatabase={1}mdb,cn=config文件(假设):authz.ldif

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to dn.base=""
    by * read
olcAccess: to dn.base="cn=Subschema"
    by * read
olcAccess: to dn.subtree= "cn=EXAMPLE.COM,cn=krbcontainer,dc=example,dc=com"
    by dn.exact="cn=kdc-service,dc=example,dc=com" write
    by dn.exact="cn=adm-service,dc=example,dc=com" write
    by * none
olcAccess: to dn.subtree= "ou=users,dc=example,dc=com"
    by dn.exact="cn=kdc-service,dc=example,dc=com" write
    by dn.exact="cn=adm-service,dc=example,dc=com" write
    by * none
olcAccess: to *
    by * read

这将olcAccess用新属性替换所有以前的属性。然后您需要将更新发送到 OpenLDAP 服务器:

ldapmodify -Y EXTERNAL -H ldapi:/// -f authz.ldif

备注:在 LDAP 服务器上,您通常希望通过 URI ldapi:///(即 UNIX 套接字)访问服务器,因此您可以添加:

URI ldapi:///

到您的ldap.conf文件 ( man 5 ldap.conf),它在不同的发行版上具有不同的路径。例如在 Debian 上它位于/etc/ldap/ldap.conf

相关内容