如何在 OpenLDAP 2.4 中使用 olcAccess 向用户添加权限

Sri*_*vic 2 ldap openldap

我有一个 OpenLdap Server 2.4 在我的公司运行,我需要允许人们在我们的一个 Web 应用程序中更改他们的图片。该功能已经存在。LDAP 中的人没有任何权利编写自己的属性(特别是这里需要的“jpegPhoto”属性)。

我在文档中找到了这个

access to attrs=jpegPhoto
    by self =xw
    by * read
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用这些行。要使用什么命令或其他什么。

如果有人能在处理过程中帮助我,那就太好了。

谢谢

Bow*_*ark 5

如果您slapd.conf用作服务器配置文件,您需要应用的修改很简单,如果您使用新cn=config布局,则稍微复杂一些。无论如何,请注意:

仍然支持旧样式的 slapd.conf(5) 文件,但不推荐使用它,并且在未来的 OpenLDAP 版本中将取消对它的支持。

如 OpenLDAP文档中所述

1) cn=config 布局

您需要修改您正在使用的数据库的配置。您的 OpenLDAP 服务器可能包含多个数据库,但您只对存储人物数据及其图片的数据库感兴趣。要列出所有可用的数据库,请使用:

slapcat -b cn=config
Run Code Online (Sandbox Code Playgroud)

此命令必须从 OpenLDAP 服务器执行。它将读取cn=config.ldif在您的slapd配置目录中命名的文件。就我而言,它位于

/usr/local/etc/openldap/slapd.d/cn=config.ldif
Run Code Online (Sandbox Code Playgroud)

请注意,slapcat -b cn=config只有当 shell 用户可以读取此文件时,它才会起作用。就我而言,文件是

-rw-------  1 ldap  ldap  680 10 mar 21:04 /usr/local/etc/openldap/slapd.d/cn=config.ldif
Run Code Online (Sandbox Code Playgroud)

它属于 user ldap、 group ldap(它们是在 OpenLDAP 服务器安装期间创建的)。我从来没有为 user 设置过密码ldap,所以:

tl;dr读取此文件并成功运行的slapcat -b cn=config方法是root.

的输出slapcat -b cn=config很大,但您可以只考虑最后几行,其中列出了您感兴趣的数据库。例如,它可能是

dn: olcDatabase={1}mdb,cn=config
Run Code Online (Sandbox Code Playgroud)

例如,这是dn包含用户图片的数据库的专有名称 ( )。您希望允许用户更改他们的图片。

您可以修改运行的数据库配置(与前面的情况类似,您需要对该文件的写权限cn=config.ldif,因此您可以root像以前一样):

ldapmodify -f /path/to/yourfile -x -D "cn=config" -W
Run Code Online (Sandbox Code Playgroud)
  • -f /path/to/yourfile 是您的配​​置文件(见下文);
  • -x 是Simple Authentication,如果你不使用SASL就需要它;
  • -D "cn=config"是您用于输入 OpenLDAP 数据库的用户名。每个单个数据库通常都有一个超级用户(通常称为Manager)和一个全局超级用户。名为的用户cn=config全局超级用户。您应该在 OpenLDAP 服务器安装期间配置了它的密码;如果您没有这个密码,您将无法修改数据库配置;
  • -W要求您键入用户的密码cn=config

位于 中的配置文件/path/to/yourfile必须是格式如下的纯文本文件:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to attrs=jpegPhoto
  by self write
  by * read
Run Code Online (Sandbox Code Playgroud)

我建议您更喜欢by self write而不是by self =xw(这将不允许用户阅读他们的图片)。小心在前面加上两个空格by,如本答案所述

您现在可以再次运行slapcat -b cn=config以检查配置是否已被修改,以及olcAccess语句的顺序是否正确。如果没有,您可以删除它们并重新添加它们,知道每个新olcAccess规范将自动放在前面的规范之后。

2) slapd.conf 布局

如果您使用的是旧的slapd.conf配置文件,您只需要对它的写权限。通常是:

-rw-------  1 ldap  ldap   2557 Dec  15  2016 slapd.conf
Run Code Online (Sandbox Code Playgroud)

因此,您可以root使用首选文本编辑器将其打开为。确定要修改的数据库部分(例如以以下开头的部分:

database        mdb
maxsize         1073741824
suffix          "dc=example,dc=com"
rootdn          "cn=Manager,dc=example,dc=com"
Run Code Online (Sandbox Code Playgroud)

只需在本节底部添加您的行,如果其他access语句已经存在,请小心。同样,我建议使用by self write而不是self =xw.


无论您的配置如何,请slapd在修改后重新启动 OpenLDAP 服务器(进程)。


如果您需要更多示例和/或说明,请考虑: