LDAP接管Linux登录认证[图文](5)

==================================LDAP接管LINUX登录认证===================================

    LDAP 接管linxu 登录身份验证,需要配置两个服务
    Name Service Switch (NSS service) Nss服务是linux的基本本地用户名服务,用于解析基本用户名uid
例如,在运行命令 ls -l 时,如果某个文件 inode 给出文件的所有者是 “user 501”,那么nss命名服务就需要将 “uid 501” 解析成用户名,并在 ls 命令输出结果中输出。
以前nss是通过查找 /etc/passwd 文件中的所有用户帐号实现的。
现在由于用户现在也存储在 LDAP 目录中,因此系统需要配置成同时对 passwd 文件和 LDAP 目录中的帐号都进行解析。
这种功能是通过 /usr/lib/libnss_ldap.so 库提供的。
   身份验证服务(PAMPAM是linux基本登录服务
以前只查/etc/passwd
现在也要查LDAP数据库


    nss_ldap-226-6是做什么的
nss包括两个 LDAP 访问客户机:nss_ldap 和 pam_ldap
nss_ldap
  是一组 C 库扩展, /usr/lib/libnss_ldap.so
使LDAP 目录服务器可以用作一个user和group的信息的主源
 
pam_ldap
  是一个 Linux-PAM 模块
使LDAP支持linux pam身份验证功能
 


   
    配置linux login 由ldap接管
在客户端(即控制台下,不能在SSH下,因为要起界面)执行authconfig

LDAP接管Linux登录认证[图文]

按上图选择ldap 选项
点next

LDAP接管Linux登录认证[图文]

输入server地址(如果ldap server就装在本地,就输入127.0.0.1即可
输入BaseDN,如dc=otas,dc=cn
点ok
系统提示:
Stoping nscd :                                            [FAILED]
Starting nscd :                                            [  OK  ]

[root@vm log]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
ldap      3501     1  0 10:46 ?        00:00:00 /usr/sbin/slapd -u ldap -h ldap:///
root      3510  2723  0 10:57 tty1     00:00:00 -bash
nscd      3571     1  0 10:58 ?        00:00:00 /usr/sbin/nscd

测试

Could not chdir to home directory /home/test: No such file or directory

-bash-3.00$ pwd
/
-bash-3.00$ su -
Password:
[root@vm ~]#
 

开启一个ssh 登陆(用户名test,此用户名在passwd里没有,只存在于ldap库中)


    Authconfig会开启nscd service
nscd - name service cache daemon
Nscd provides cacheing for accesses of the passwd, group, and hosts databases through standard libc interfaces,


    ldapsearch -x出错,不显示任何条目————ldap.conf没配BaseDN
现象:
[root@vm ~]# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
 
    在debug调试模式下看到下面的信息
slapd starting
conn=0 fd=10 ACCEPT from IP=127.0.0.1:32769 (IP=0.0.0.0:389)
conn=0 op=0 BIND dn="" method=128
conn=0 op=0 RESULT tag=97 err=0 text=
conn=0 op=1 SRCH base="dc=example,dc=com" scope=2 deref=0 filter="(objectClass=*)"
conn=0 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=
conn=0 op=2 UNBIND
conn=0 fd=10 closed
slapd shutdown: waiting for 0 threads to terminate
slapd stopped.
 
赶紧去检查ldap.conf,发觉配置返回初始化的缺省配置了
[root@vm openldap]# cat ldap.conf
#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
HOST 127.0.0.1
BASE dc=example,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
 
解决:重新配ldap.conf,重起ldap server

结论:发现执行authconfig,不选ldap(即选择md5 shadown passwd),再点next后,authconfig会自动把/etc/openldap/ldap.conf复原为缺省,而造成客户端进不去了
客户端要求dn和server的dn要匹配

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfzzj.html