一、账号登录系统流程讲解
当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密码(/etc/shadow)进行查找并进行匹配。当本地匹配不成功时,会通过后端认证服务器(OpenLDAP服务器)进行验证。
二、配置文件功能介绍
下面介绍几个配置文件再后面我们会进行修改,我这里简单介绍一下。
/etc/nsswitch.conf 该文件主要用于名称转换服务,用于系统验证用户身份所读取本地文件或是远程验证服务器文件。
/etc/sysconfig/authconfig 主要用于提供身份验证之LDAP功能,该配置文件用来跟踪LDAP身份认证机制是否正确启用。
/etc/pam.d/system-auth 主要用于实现用户账户身份验证。
/etc/pam_ldap.conf 实现客户端与服务端的交互。
/etc/openldap/ldap.conf 主要用于查询OpenLDAP服务器所有条目信息。
三、三种部署方式介绍
1、图形化部署
一般通过 setup、authconfig-gui命令调用图形界面实现配置。通过图形方式将客户端加入到OpenLDAP服务端配置非常简单,只需要根据提示并正确选择菜单以及正确输入Server和Base DN对应的值即可。
当完成配置后,系统会根据你所定义的参数对涉及的配置文件进行修改,完成客户端的部署。
2、配置文档部署
当图形界面部署无法满足当前需求时,此时通过会选择修改配置文件方式实现OpenLDAP客户端的部署,例如,当对配置文件额外参数进行调整时。
3、命令行部署
一般通过anthconfig实现命令行的部署。命令行的部署是三种配置方式中最难的一种,比较难的是因为你事先需要定义相关选项及参数进行了解。
四、图形化部署OpenLDAP客户端
1、下载setup工具
1
|
yum
install
setuptool -y
|
2、域名解析,时间同步
3、配置文件备份
1
2
|
cp
/etc/nsswitch
.conf
/etc/nsswitch
.conf.bak
cp
/etc/pam
.d
/system-auth-ac
/etc/pam
.d
/system-auth-ac
.bak
|
4、操作步骤
直接运行setup命令。
发现我一个软件没有安装,没事,我们安装就是了。
5、查看修改的文件
目前查看一下,到底他修改了哪些文件。
1
|
[root@test01 ~]
# vimdiff /etc/nsswitch.conf /etc/nsswitch.conf.bak
|
我们可以看到增加了ldap,说明用户验证首先查看本地文件,没有的话再通过ldap验证。
1
|
[root@test01 ~]
# vimdiff /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
|
主要添加一些pam支持ldap的认证。
1
|
[root@test01 ~]
# tail -5 /etc/nslcd.conf
|
1
|
[root@test01 ~]
# tail -5 /etc/pam_ldap.conf
|
六、OpenLDAP客户端验证
1、配置/etc/openldap/ldap.conf
默认客户端不允许查询OpenLDAP条目信息,如果需要让客户端查询条目,需要添加OpenLDAP服务端的URI以及BASE条目,命令如下:
1
2
3
4
5
6
7
8
9
10
|
[root@test01 ~]
# ldapsearch -x -LLL
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
[root@test01 ~]
# cat >> /etc/openldap/ldap.conf << EOF
URI ldap:
//192
.168.2.10/
BASE
dc
=wzlinux,
dc
=com
EOF
[root@test01 ~]
# ldapsearch -x -LLL|wc -l
45
|
2、客户端验证
用户的信息添加我已经在上篇博文里面介绍过了,这次我们验证一下添加的这个test1用户。如果没有获取成功,请查看以上提到的配置文件。
1
2
3
4
5
6
7
8
9
10
11
|
# 查询在我们的客户端机器上面是否有test1用户,查询是没有的
[root@test01 ~]
# cat /etc/passwd |grep test1
# 直接查看test1的ID,可以查询到,说明他通过了OpenLDAP进行的验证
[root@test01 ~]
# id test1
uid=24422(test1) gid=0(root)
groups
=0(root),10673(DBA)
# 以下信息都说明通过的OpenLDAP
[root@test01 ~]
# getent passwd test1
test1:x:24422:0:test1:
/home/test1
:
/bin/bash
[root@test01 ~]
# getent shadow test1
test1:{SHA}tESsBmE
/yNY3lb6a0L6vVQEZNqw
=:12011:0:99999:0:99999:99999:0
|
3、客户端登录验证
此时使用OpenLDAP用户验证是否正常登录客户端。从截图我们可以看到已经登录成功了,但是发现他没有自己的主目录,此时通过创建用户家目录即可解决。
一般可以通过配置服务端和客户端两种方式解决,一种是 autofs+nfs,另一种是修改/etc/pam.d/system-auth添加pam模块(pam_mkhomedir.so)实现OpenLDAP用户家目录的创建,我们这里选择添加pam模块进行演示,这也是比较推荐的方法。
1
2
3
|
[root@test01 ~]
# cat >> /etc/pam.d/sshd << EOF
session required pam_mkhomedir.so skel=
/etc/skel/
umask
=0022
EOF
|
客户端再次登录验证。
七、配置文件部署OpenLDAP客户端
nslcd进程由nss-pam-ldapd 软件包提供,并根据nslcd.conf配置信息,与后端的认证服务器进行交互。例如,用户、主机名称服务信息、组织、其他数据历史存储、NIS等。
1、安装OpenLDAP客户端软件包
1
|
yum
install
openldap-clients nss-pam-ldapd
|
2、修改/etc/nslcd.conf 配置文件
修改文件最后面如下内容。
1
2
3
4
|
uri ldap:
//192
.168.2.10/
base
dc
=wzlinux,
dc
=com
ssl no
tls_cacertdir
/etc/openldap/cacerts
|
3、修改pam_ldap.conf 配置文件
在文件最后面添加如下内容,注意删除里面的base和host有效的那一行。
1
2
3
4
5
|
uri ldap:
//192
.168.2.10/
base
dc
=wzlinux,
dc
=com
ssl no
tls_cacertdir
/etc/openldap/cacerts
pam_password md5
|
4、修改system-auth 认证文件
在文件内添加如下内容,具体位置请查看上面的图片。
1
2
3
4
|
auth sufficient pam_ldap.so use_first_pass
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
|
5、修改nsswitch.conf 配置文件
在passwd、shadow、group后面的files 后面添加ldap。
6、修改/etc/sysconfig/authconfig 认证文件
1
2
3
4
|
USESHADOW=
yes
#启用密码验证
USELDAPAUTH=
yes
#启用OpenLDAP验证
USELOCAUTHORIZE=
yes
#启用本地验证
USELDAP=
yes
#启用LDAP认证协议
|
7、加载nslce进程
1
|
service nslcd restart
|
以上我简单略过的大家可以参照图形化安装修改的一些文件内容来修改,相对来说图形化安装比较方便,但是如果遇到大批量安装,使用命令行部署还是比较简便的。
八、命令行部署OpenLDAP客户端
1、authconfig命令介绍
通过authconfig -h 查看其帮助信息。
2、安装客户端软件包
1
|
yum
install
openldap-clients nss-pam-ldapd -y
|
3、命令行部署
运行一下命令,可以根据帮助文档进行个性化定制。
1
2
3
4
5
6
7
8
9
|
authconfig --enablemkhomedir \
--disableldaptls \
--enablemd5 \
--enableldap \
--enableldapauth \
--ldapserver=ldap:
//192
.168.2.10 \
--ldapbasedn=
"dc=wzlinux,dc=com"
\
--enableshadow \
--update
|
可以看到正常登录,创建家目录。之前我们是在/etc/pam.d/sshd里面添加的创建家目录认证,我们使用命令部署之后,我看它加在了/etc/pam.d/system-auth里面,之前我手动修改配置文件的时候不行,图形化安装也不行,大家可以试试看看是否OK,具体如下:
4、用户密码设置
默认情况下用户是不可以修改密码的,因为我服务端开通了修改密码的权限,所以我这里用户可以个性化修改自己的密码,添加的服务端代码如下,具体操作请查看我的服务端部署文档。
密码修改演示如下。
本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/1836997,如需转载请自行联系原作者