Ubuntu 14.04系统上配置LDAP客户端的过程,记录一下。
sudo apt-get install ldap-utils ldap-auth-client libnss-ldap libpam-ldap
安装过程中提示填写ldap相关信息:ldap server地址,base dc等,信息保存在/etc/ldap.conf中,可通过dpkg-reconfigure ldap-auth-config重新配置,其中:
lda地址格式 ldap://192.168.x.x:389
Distinguished name of the search base: 就是你目录树的根,比如我的是dc=163,dc=com
LDAP version to use: 3
Make local root Database admin: Yes
Does the LDAP database require login? No
LDAP account for root: 安装LDAP服务器时的创建的admin账号,我的是cn=admin,dc=163,dc=com
LDAP root account password:
修改/etc/nsswitch.conf文件,添加ldap登陆方式,同时系统查找顺序,以便在查询 LDAP服务器之前先检查您的本地passwd文件
sudo cp -p /etc/nsswitch.conf /etc/nsswitch.conf.bak
sudo auth-client-config -t nss -p lac_ldap
可以看到,执行完命令以后,nsswitch.conf文件变成了如下内容
……
passwd: files ldap
group: files ldap
shadow: files ldap
……
修改/etc/pam.d/common-password,使得执行passwd时密码可以同步到LDAP服务器上去
sudo vim /etc/pam.d/common-password
……
#找到第26行(删除use_authtok字段)
password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass
……
如果未操作这一步,登陆的LDAP用户在执行passwd命令修改密码时,会提示passwd: Authentication information cannot be recovered的错误
自动创建home目录
让pam_mkhomedir.so模块正常工作,用户第一次登录的时候创建主目录
sudo vim /etc/pam.d/common-session
#在末尾添加一行(必须添加在pam_ldap和pam_krb5项之前)
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
sudo /etc/init.d/libnss-ldap restart
sudo /etc/init.d/nscd restart #ubuntu12.04还需要此步,否则会提示Unknown id: username
然后可以测试连接一下LDAP Server了
ldapsearch -H ldap://192.168.x.x:389 -x -b "ou=People,dc=163,dc=com" | grep dn
测试过程中如果遇到错误,请查看本机的/var/log/auth.log分析原因
参考文档:
Ubuntu LDAPClientAuthentication
Ubuntu 14.04 OpenLDAP 服务器
Configure LDAP Client