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

时间:2017-07-24 12:52:31

标签: ldap openldap

我在公司运行OpenLdap Server 2.4,我需要允许人们在我们的WebApplication中更改自己的图片。 该功能已经存在。 LDAP中的人员无权编写自己的属性(特别是“jpegPhoto”属性)。

我在文档中找到了这个

access to attrs=jpegPhoto
    by self =xw
    by * read

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

如果有人可以帮助我处理它可能会很棒。

由于

1 个答案:

答案 0 :(得分:4)

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

  

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

如OpenLDAP documentation中所述。

1)cn = config layout

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

slapcat -b cn=config

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

/usr/local/etc/openldap/slapd.d/cn=config.ldif

请注意slapcat -b cn=config仅在shell用户可以读取此文件时才有效。就我而言,文件是

-rw-------  1 ldap  ldap  680 10 mar 21:04 /usr/local/etc/openldap/slapd.d/cn=config.ldif

它属于用户ldap,组ldap(它们是在OpenLDAP服务器安装期间创建的)。我从未为用户ldap设置密码,因此:

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

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

dn: olcDatabase={1}mdb,cn=config

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

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

ldapmodify -f /path/to/yourfile -x -D "cn=config" -W
  • -f /path/to/yourfile是您的配置文件(见下文);
  • -x是简单身份验证,如果您不使用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

我建议你更喜欢by self write而不是by self =xw(这不允许用户阅读他们的照片)。请注意在by之前加上两个空格,如this answer中所述。

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

2)slapd.conf布局

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

-rw-------  1 ldap  ldap   2557 Dec  15  2016 slapd.conf

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

开头的部分)
database        mdb
maxsize         1073741824
suffix          "dc=example,dc=com"
rootdn          "cn=Manager,dc=example,dc=com"

只需在本节底部添加您的行,如果已存在其他access语句,请务必小心。我建议再次使用by self write代替self =xw

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

如果您需要进一步的示例和/或说明,请考虑: