在 LDAP 服务器上创建 OpenLdap 管理员组

在 LDAP 服务器上创建 OpenLdap 管理员组

我正在尝试在运行 slapd 的 OpenLdap 服务器上创建一个简单的管理员组。目前没有 slapd 文件,我一直在使用 cn=config 格式。

  • 操作系统:CentOS Linux 版本 7.6.1810(核心)
  • OpenLDAP:$OpenLDAP:slapd 2.4.44

我的目标是能够将用户放入这个管理组“cn=admins-group,ou=groups,dc=example,dc=com”,以便他们可以登录 Phpldapadmin 网络界面并能够在“ou=People,dc=example,dc=com”中创建用户。

这是管理员组的 ldif:(admin-group.ldif)

dn: cn=admin-group,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: admin-group
gidNumber: 12345
memberUid: admin1

我意识到实现我的目标需要采取的步骤之一是创建一个 ACL 规则,允许管理员组的用户访问他们需要的资源。

这是我编写的用于修改 olcDatabase={1}monitor 中已存在规则的 ldif:(accesschange.ldif)

dn: olcDatabase={1}monitor,cn=config
changetype: modify
add: olcAccess

olcAccess: to *
  by self write
  by group/posixGroup/uniqueMember=cn=admins- group,ou=groups,dc=example,dc=com write

我使用以下命令运行了此文件:

ldapmodify -x -W -D "cn=ldapadm,dc=example,dc=com" -f monitor.ldif

运行起来没有问题。但是,当我尝试在 People OU 下添加用户时,phpldapadmin 仍然出现以下错误

Could not add the object to the LDAP server.
LDAP said:  Insufficient access
Error number:   0x32 (LDAP_INSUFFICIENT_ACCESS)
Description:    You do not have sufficient permissions to perform that operation.

我已经研究这个问题 2 周了,但毫无进展。有人能帮忙吗?

编辑:我正在查看 /etc/openldap/slapd.d/cn\=config/ 下的 olcDatabase:{1}monitor 文件,但没有看到我添加的新规则。也许这是我使用 ldapmodify 的方式的问题?

编辑#2:通过使用 ldapmodify 与 EXTERNAL 修复写入问题,如下所示:

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

我将新的 ACL 规则放入 monitor.ldif 中并按如下方式运行。Monitor.ldif 如下所示。

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=fsr,dc=local" read by * none
olcAccess: to *
  by self write
  by group/groupOfNames/member.exact="cn=admins,ou=groups,dc=fsr,dc=local" write

但是,我仍然无法使用一个 admin1 创建用户。我不确定我遗漏了什么。我可以在 olcDatabase:{1}monitor 文件中看到我创建的规则,但我仍然无法创建用户。

答案1

who 子句中使用的组架构错误。您必须使用具有完整 DN 的组架构作为成员属性。memberUid不起作用。

更好的使用:

by group/groupNames/member="cn=admins-group,ou=groups,dc=example,dc=com" write

组条目应如下所示:

dn: cn=admins-group,ou=groups,dc=example,dc=com
objectClass: groupOfNames
cn: admins-group
member: uid=foo1,ou=users,dc=example,dc=com

答案2

我正在创建新的管理员组,这是我的 .ldif 文件,可以继续吗?

dn:cn=xs-administrators,ou=groups,dc=example,dc=com objectClass:groupOfNames cn:xs-administrators member:uid=adm-user1,dc=example,dc=com dn:olcDatabase={1}monitor,cn=config changetype:修改 add:olcAccess olcAccess:to * by self write by group/groupNames/member="cn=xs-administrators,ou=groups,dc=example,dc=com" write

相关内容