如何使用 groupdn 控制 ldap 用户访问?

如何使用 groupdn 控制 ldap 用户访问?

我正在使用 openldap、nslcd 和 nss-pam-ldapd。我想限制用户登录到 ldap 客户端。我已经在 CentOS 6.5 中使用 groupdn 进行了配置,没有任何问题。但在 CentOS 7 中,没有pam_ldap.conf文件。我尝试通过添加以下行来实现nslcd.conf

filter passwd (memberOf=cn=groupname,ou=groups,dc=example,dc=com)

但即使他是该群组的成员,它也不会允许任何人登录。我该如何解决这个问题?

我安装了 sssd 并按如下方式配置它,但即使他不是上述组的成员,每个人仍然可以登录。当我尝试登录时, and 中没有写入任何日志sssd.log/var/log/messages我可以使用 . 检查 nslcd日志nslcd -dsssd.conf

[sssd]
config_file_version = 2
services = nss, pam
domains =example.com
debug_level = 10
[nss]
[pam]
[domain/example.com]
ad_server= app.example.com
ad_domain= example.com
sssd-ldap = app.example.com
ldap_access_order = filter, expire
ldap_access_filter = (memberOf=cn=groupname,ou=groups,dc=app,dc=example,dc=com)
ldap_schema = rfc2307bis
ldap_group_member = uniqueMember
ldap_search_base = dc=app,dc=example,dc=com
id_provider = ldap
auth_provider = ldap
access_provider = ldap
ldap_uri = ldap://app.example.com/

答案1

您应该使用 SSSD 并将其配置为使用 LDAP,而不是直接使用 PAM。

然后您可以在 SSSD 域配置中使用以下内容:

access_provider = simple
simple_allow_groups = groupname

这是限制用户的一种非常基本的方法,但您也可以使用access_provider=ldap 更高级的 LDAP 查询来控制访问。

参见man sssdman sssd-ldap

相关内容