我已经通过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_ *解决了这个问题。