Linux ldap 身份验证,pam_filter 被忽略

Linux ldap 身份验证,pam_filter 被忽略

我已经通过 ldap 设置了 linux 客户端身份验证,它可以正常工作。我想通过添加或删除帐户的不同 OU 来控制用户对多个服务的访问。例如,如果允许用户登录 linux 计算机,则其 ou 必须包含“linux”。如果允许此用户访问 redmine,则其 ou 也必须包含“redmine”。

问题是,/etc/ldap.conf 中的 pam_filter 参数被忽略。当我设置它时

pam_filter ou=linux

到达 LDAP 服务器的搜索字符串不包含此过滤器:

openldap slapd[5374]: conn=1857 op=1 SRCH base="ou=people,dc=rwth-cbmb,dc=de" scope=2 deref=0 filter="(objectClass=posixAccount)"

正如我所说,我一直在 redmine(票证跟踪系统)中使用它,我也在其中设置了 ldap 过滤器,并且它可以正常工作。我在服务器上收到以下搜索请求:

openldap slapd[5374]: conn=1863 op=1 SRCH base="ou=people,dc=rwth-cbmb,dc=de" scope=2 deref=0 filter="(&(objectClass=*)(uid=alex)(ou=redmine))"

我有以下软件包版本:

ldap-auth-client 0.5.3

ldap-auth-config 0.5.3

ldap-utils 2.4.28-1.1ubuntu4.2

libldap-2.4-2 2.4.28-1.1ubuntu4.2

libnss-ldap 264-2.2ubuntu2

libpam-ldap 184-8.5ubuntu2

客户端ubuntu 12.04,服务器ubuntu server 10.04。

答案1

好的,解决方案是使用

nss_base_passwd ou=people,dc=rwth-cbmb,dc=de??ou=linux

在客户端的 /etc/ldap.conf 中。根据文档:

句法:

nss_base_XXX 基础?范围?过滤器

我不知道为什么 pam_filter 不起作用,但 nss_* 解决了这个问题。

答案2

将以下行添加到 /etc/pam_ldap.conf 文件

pam_check_host_attr yes

来自pam_ldap 手册页

验证 pam_check_host 属性

指定是否应检查“host”属性以获得登录授权(PAM 堆栈中的“account”)。默认不检查。如果设置为“yes”且用户没有“host”属性的值,则用户将无法登录。

相关内容