OpenLDAP:ACL:允许用户管理自己的组

时间:2014-04-22 09:13:07

标签: acl openldap

我需要您对LDAP结构和相关ACL的建议。

我们的LDAP将管理包含用户的10个(可能不同的数量)组织(总共250个用户) 我希望允许组织中的1个用户管理他自己组织的所有用户。 用户还将附加到自定义组。

最适合的LDAP结构是什么?

我的第一个想法如下: 团体:

dn: cn=Manager,ou=Roles,ou=Groups
objectClass: posixGroup
objectClass: top
cn: Manager
gidNumber: 10100
memberUid: user1
memberUid: user3

dn: cn=Structure1,ou=Structures,ou=Groups
objectClass: posixGroup
cn: Structure1
gidNumber: 10000
description: Structure1
memberUid: user1
memberUid: user2

dn: cn=Structure2,ou=Structures,ou=Groups
objectClass: posixGroup
cn: Structure2
gidNumber: 10001
description: Structure2
memberUid: user3
memberUid: user4

应允许user1编辑用户user2,但不允许编辑user3或user4 应允许user3编辑user1但不允许编辑user2

我实际上卡在ACL上,因为我没有成功使用ACL set方法来使用条目组。 我想做这样的事情:

{1}to dn.children="ou=Users" by set="[cn=]+this/groups+[,ou=Structures,ou=Groups]/memberUid & user/uid" write by * read

如果比posixGroup

更好,我可以使用groupOfNames

我已经读过:

1 个答案:

答案 0 :(得分:2)

我的贡献是解决这种情况的一种选择。我知道已经有一段时间了,但我希望这有助于那里的人。     - 更改为groupofnames或organizationalrole(最后一个支持空组)都需要dn作为成员。     - 启用成员覆盖,以启用用户的memberof操作属性(这将添加用户所属组的列表,添加到用户条目中的属性) olcMemberOfGroupOC:organizationalRole olcMemberOfMemberAD:roleOccupant olcMemberOfMemberOfAD:groups(“groups”是添加到用户的操作属性)

  • 一旦执行了两个操作,并且您确定用户在组操作属性上具有值,则根据原始问题,这里有两个方案:
    • 第一种情况 - 允许user1写入user3,ou =用户,因为它们属于cn = Manager,ou = Roles,ou = Groups
    • 第二种情况 - 允许user1写入user2,ou = users,因为它们属于cn = Structure1,ou = Structures,ou = Groups

by set =“this / groups& user / groups”write

只要用户(修改者和修改者)具有相同的组,此acl就允许写入,acl将设置写权限。

  • 用户=用户1,OU =用户

    “user / groups”获取修改器组属性的值。 cn =经理,ou =角色,ou =团体 - cn = Structure1,ou =结构,ou =团体。

  • 此=用户3,OU =用户

    “this / groups”获取修改后的对象组属性的值。 cn =经理,ou =角色,ou =群组和cn = Structure2,ou =结构,ou =群组

  • 此=用户2,OU =用户

    “this / groups”获取修改后的对象组属性的值。 cn =经理,ou =角色,ou =团体和 cn = Structure1,ou =结构,ou =团体

我希望这可以解决这个问题,并且对于那些在几天前就像我做的那样与openldap acl挣扎的人一样有用。

最好的问候!!