前几天在两个使用Ubuntu Server 12.04的 VPS上搭建了LDAP环境。
Ubuntu使用LDAP身份验证,仅需从更新源安装libpam-ldap nscd这两个DEB包,
1 |
apt-get -y install libpam-ldap nscd |
然后根据引导一步步填入信息,再修改下pam的配置文件即可使用。
不过昨天在给两个个使用Debian的虚拟专用服务器使用同样的方法安装并配置LDAP身份验证客户端时,就一直弄不好,总是无法通过验证,从/var/log/auth.log文件可以读取到类似的信息:
1 |
Jul 20 00:32:11 hostname sshd[8663]: pam_ldap: error trying to bind as user "cn=username,ou=users,dc=domain,dc=com" (Invalid credentials) |
谷歌了下有关的资料,但并未找到有效的解决方案。昨天尝尽各种方法折腾了好久……
今天早上起来用search从更新源看了下与ldap有关的DEB包,看到一个libnss-ldap,想起数天前弄pam_mysql时,也要安装一个libnss-mysql,于是尝试安装了这个包。
1 |
apt-get -y install libnss-ldap |
同样,根据引导一步步填入信息,然后修改pam的配置文件。
再次使用LDAP中已添加的账户登录,成功通过验证。
为何有如此差异?
先来看看Ubuntu下安装libpam-ldap nscd这两个包时输出的信息:
1 2 3 4 5 6 7 8 9 |
apt-get install libpam-ldap nscd Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: auth-client-config ldap-auth-client ldap-auth-config libnss-ldap Suggested packages: libpam-cracklib The following NEW packages will be installed: auth-client-config ldap-auth-client ldap-auth-config libnss-ldap libpam-ldap nscd |
再看看Debian下安装libpam-ldap与nscd时输出的信息:
1 2 3 4 5 6 7 |
apt-get install libpam-ldap nscd Reading package lists... Done Building dependency tree... Done Suggested packages: libnss-ldapd libnss-ldap The following NEW packages will be installed: libpam-ldap nscd |
可见,Ubuntu自动安装了数个额外的DEB包,其中包括了libnss-ldap,而Debian是作为建议的DEB包出现,并没有自动安装。相信很多人都和我一样,除非出现错误信息,否则使用apt-get或yum安装东西肯定不会仔细看这些,自然也不会留意到有建议安装的包……
再来看看Debian下安装libnss-ldap时输出的信息:
1 2 3 4 5 6 7 |
apt-get install libnss-ldap Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: libpam-ldap nscd The following NEW packages will be installed: libnss-ldap libpam-ldap nscd |
这就充分说明,在Debian下配置LDAP验证,libnss-ldap这个包是最关键。
最后就是配置文件。
Debian下PAM的LDAP验证客户端的配置文件有两个,分别是pam-ldap和libnss-ldap的,他们在以下路径:
1 2 |
/etc/libnss-ldap.conf /etc/pam_ldap.conf |
密码则在以下两个文件中:
1 2 |
/etc/libnss-ldap.secret /etc/pam_ldap.secret |
Ubuntu应该是libnss-ldap与pam-ldap共用配置文件,其路径为:
1 |
/etc/ldap.conf |
密码文件在此:
1 |
/etc/ldap.secret |