Linux ldapauthentication,pam_filter被忽略

我已经通过ldap设置了linux客户端authentication,它工作。 我想通过添加或删除不同的账户OU来控制用户对多个服务的访问。 例如,如果用户被允许loginlinux机器,则必须包含“linux”。 如果这个用户被允许访问,比如redmine,那么它也必须包含“redmine”。

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

pam_filter ou=linux 

来到ldap服务器的searchstring不包含此filter:

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

正如我所说,我一直在使用redmine(门票跟踪系统),我也设置ldapfilter,它的工作原理。 我在服务器上得到以下search请求:

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 =pipe理平台))”

我有以下软件包版本:

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的服务器10.04。

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

 pam_check_host_attr yes 

从pam_ldap手册页 :

pam_check_host_attr

指定是否应为login授权检查“主机”属性(PAM堆栈中的“帐户”)。 默认不是。 如果设置为“是”,并且用户对“主机”属性没有任何值,则用户将无法login。

好的,解决scheme是使用

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

在客户端的/etc/ldap.conf中。 据文件记载:

句法:

nss_base_XXX base?scope?filter

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