OpenLDAP 配置困难

OpenLDAP 配置困难

我一直在使用 AWS EC2 在 Linux 实例上配置 LDAP 服务器。到目前为止,我已成功设置 LDAP 和 phpLDAPadmin 以协同工作。

我已经创建了用户和组“组织单位”。我已将用户和组添加到这些“OU”。现在我想将 LDAP 树的特定部分的访问权限授予“组”中的“用户”成员。这是我到目前为止无法配置的...

我的 LDAP 树如下所示:

+--> dc=www,dc=website,dc=com (3)
  ---> cn=admin
  +--> ou=groups (4)
  | ---> cn=admin_users
  | ---> cn=app1_users
  | ---> cn=app2_users
  | ---> cn=basic_users
  +--> ou=users (3)
  | ---> cn=user1
  | ---> cn=user2
  | ---> cn=user3

假设我将 user1 + user2 添加到“app1_users”的“memberUid”列表中,将 user2 + user3 添加到“app2_users”的“memberUid”列表中。

我想:

  • cn=admin 对树有完全权限/访问权限
  • app1_users 可以连接(phpLDAPadmin)并将新成员添加到组本身
  • 对于 app2_users 的用户来说也是如此

连接的用户(在 phpLDAPadmin 上)应该只能看到他所属的树(和子树)。

这是我尝试过的 ACI(但显然不起作用):

access to attrs=shadowLastChange
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by * read

access to attrs=userPassword
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by anonymous auth by * none

access to dn.base=""
    by * read

access to dn.subtree="cn=app1_users,ou=groups,dc=www,dc=website,dc=com"
    by group.base="cn=app1_users,dc=www,dc=website,dc=com" write
    by dn.base="cn=admin,dc=www,dc=website,dc=com" write 
    by * none

access to dn.subtree="cn=app2_users,ou=groups,dc=www,dc=website,dc=com"
    by group.base="cn=app2_users,dc=www,dc=website,dc=com" write
    by dn.base="cn=admin,dc=www,dc=website,dc=com" write 
    by * none

access to *
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by * read

我的配置有问题吗?

答案1

假设我将 user1 + user2 添加到“app1_users”的“memberUid”列表中,将 user2 + user3 添加到“app2_users”的“memberUid”列表中。

这不适用于posix集团条目会员编号作为成员属性。会员编号仅包含短用户名,不包含 DN。

作为slapd.访问(5)明确指出组 ACL 仅适用于包含每个成员条目的完整可分辨名称 (DN) 的成员属性:

   The statement group=<group> means that access is  granted  to  requests
   whose  DN  is  listed  in the group entry whose DN is given by <group>.
   The  optional  parameters  <objectclass>  and  <attrname>  define   the
   objectClass  and  the  member  attributeType  of  the group entry.  The
   defaults are groupOfNames and member, respectively.

关于 ACL 的一些注意事项:

  • 省略属性的 ACL影子最后更改因为 LDAP 影子映射是一个有问题的概念。如果您确实使用影子映射,您的 ACL(可能从某些操作指南中复制粘贴)将允许用户规避影子密码过期。
  • 不要授予隐式读取权限用户密码通过使用包容性写入访问权限。请改用只写权限=w

另请参阅我对这个问题的回答服务器故障

在 OpenLDAP 中设置 ACL,以便用户可以从过滤的子树中找到自己的条目

在自己走这条路之前,我建议您考虑使用我在其他答案中提到的系统之一:

适用于 Linux 的集中式 NSS 后端

如何仅允许用户和/或组访问连接到 openldap 服务器的某些客户端机器?

相关内容