搭建NIS服务器实现用户集中化认证
NIS服务器概述
NIS网络信息服务,模式是C/S 模式。NIS是集中控制几个系统管理数据库的网络产品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd。管理员只需要简单的使用维护NIS服务器的文件即可。
Linux系统中用户按地域分两类: 本地用户, 远程用户(NIS,LDAP,AD)
ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所有客户端的查询都发往NIS服务器。
ypserv是回答客户端查询的服务器进程。
使用的场景:
在一个大型的网域当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的账号与密码时,如果能够有一部账号主控服务器来管理网域中所有主机的账号, 当其他的主机有用户登入的需求时,才到这部主控服务器上面要求相关的账号、密码等用户信息, 如此一来,如果想要增加、修改、删除用户数据,只要到这部主控服务器上面处理即可, 这样就能够降低重复设定使用者账号的步骤了!
NIS工作流程
NIS服务的应用结构分为NIS服务器和NIS客户机两种角色,NIS服务器集中维护用户的帐号信息(数据库)供NIS客户机进行查询,用户登录任何一台NIS客户机都会从NIS服务器进行登录认证,可实现用户帐号的集中管理。
1.Nis Master先将帐号密码相关文件制作成数据库文件;
2.若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。
3.NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案;
4.若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询;
5.每部 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』
一:实验目标
实战:配置NIS服务器实现集中化认证。
实战:在客户端自动挂载NIS用户家目录
二:实验环境
NIS服务端 :xuegod63 IP:192.168.1.63
Web服务端 :xuegod64 IP:192.168.1.64
客户端 :xuegod62 IP:192.168.1.62
三:实验代码
1、环境搭建
1)NIS服务器:xuegod63:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/ypserv-2.19-22.el6.x86_64.rpm
#NIS服务的主程序包。
[root@xuegod63 ~]# service iptables stop
2)NIS客户端:xuegod64
[root@xuegod64 ~]# rpm -ivh /mnt/Packages/ypbind-1.20.4-29.el6.x86_64.rpm #NIS客户端,ypind进程包
[root@xuegod64 ~]# rpm -ivh /mnt/Packages/yp-tools-2.9-12.el6.x86_64.rpm #NIS客户端工具,用来查询数据库信息。
[root@xuegod63 ~]# rpm -qf `which yppasswd ` #使用yppasswd可以远程修改NIS服务器用户的密码
yp-tools-2.9-12.el6.x86_64
[root@xuegod64 ~]# service iptables stop
NIS服务器相关文档 |
|
/etc/ypserv.conf |
NIS主配置文件,可以控制NIS客户端是否可以访问NIS服务器 |
/etc/hosts |
记录主机和IP地址对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要存放每一台NIS客户端的主机记录。 |
实战:配置NIS服务器实现集中化认证
通过NIS服务器可以使用帐号nisuser1,登录公司的samba服务器、邮件服务器、WEB服务器等
认证过程:
NIS服务器的域名:NIS
服务端主机名:xuegod63.cn
客户端主机名:xuegod64.cn
1、安装NIS服务器 :xuegod63
1)创建nis用户专用目录(方便后期实现:NIS+autofs的功能)
[root@xuegod63 ~]# mkdir /home/nishome/
[root@xuegod63 ~]# useradd -d /home/nishome/nisuser1 nisuser1
[root@xuegod63 ~]# useradd -d /home/nishome/nisuser2 -s /sbin/nologin nisuser2 #后期测试是否可以使用此帐号能否登录其它系统
[root@xuegod63 ~]# echo 123456 | passwd --stdin nisuser1
[root@xuegod63 ~]# echo 123456 | passwd --stdin nisuser2
2)设置NIS域名
NIS是会通过域名来分辨不通账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名才行。
[root@xuegod63 ~]# nisdomainname
(none)
方法1:永久生效,需要重启机器
[root@xuegod63 ~]# vim /etc/sysconfig/network #在文件最后,添加以下内容
cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xuegod63.cn
NISDOMAIN=xuegod.cn
[root@xuegod63 ~]# service network restart
方法2:临时生效
[root@xuegod63 ~]# nisdomainname xuegod.cn #临时生效,和hosname用法一样
[root@xuegod63 ~]# nisdomainname
xuegod.cn
3)配置hosts文件:主机名与IP的对应
[root@xuegod63 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63.cn
192.168.1.64 xuegod64.cn
4)设置/etc/ypserv.conf主配置文件
[root@xuegod63 ~]#vim /etc/ypserv.conf
配置:允许所有内网客户端可以连接NIS服务器,除此之外的客户端都拒绝连接。
如图:
ypserv.conf文件是逐行解释执行,所以要注意设置顺序
参数 格式为: |
|
Host: |
指定客户端,可以指定具体IP地址,也可以挃定一个网段 |
Domain: |
设置NIS域名,这里的NIS域名和DNS中的域名并没有关系。 |
Map: |
设置可用数据库名称,可以用“*”代替所有数据库 |
Security: |
安全性设置。主要有none、port和deny三种参数设置。 |
none: |
没有任何安全限制,可以连接NIS服务器。 |
port: |
只允许小于1024以下的端口连接NIS服务器。 |
deny: |
拒绝连接NIS服务器。 |
5)建立NIS数据库
(1)首先要启动ypserv服务,否则建立NIS数据库会报错
[root@xuegod63 ~]# service ypserv start
(2)创建数据库:
[root@xuegod63 ~]# ll /usr/lib64/yp/ypinit #使用这个命令,必须写绝对路径
-rwxr-xr-x 1 root root 4088 Aug 31 2011 /usr/lib64/yp/ypinit
[root@xuegod63 ~]# echo $PATH #没有在PATH中
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
[root@xuegod63 conf]# /usr/lib64/yp/ypinit -m # 这里必须是全路径,m - master
next host to add: xuegod63.cn
next host to add: #Ctrl+D结束输入
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/xuegod.cn/ypservers...
Running /var/yp/Makefile... # 生成哪个NIS数据库文件
gmake[1]: Leaving directory `/var/yp/xuegod.cn'
xuegod63.cn has been set up as a NIS master server.
Now you can run ypinit -s xuegod63.cn on all slave server.
[root@xuegod63 ~]# ls /var/yp #生成一个xuegod.cn 目录。
binding Makefile nicknames xuegod.cn ypservers
说明: 每次手动更改数据库内容后,(比如更新用户密码) 。 就需要执行: /usr/lib64/yp/ypinit -m
6)重启服务: 不重启,否则添加新数据将无法生效
[root@xuegod63 ~]# service ypserv restart
[root@xuegod63 ~]# /etc/init.d/yppasswdd restart
[root@xuegod63 ~]# chkconfig ypserv on
[root@xuegod63 ~]# chkconfig yppasswdd on
2、配置客户端:xuegod64
1)安装NIS客户端具
[root@xuegod64 ~]# rpm -ivh /mnt/Packages/ypbind-1.20.4-29.el6.x86_64.rpm [root@xuegod64 ~]# rpm -ivh /mnt/Packages/yp-tools-2.9-12.el6.x86_64.rpm
2)加入域
[root@xuegod64 ~]# system-config-authentication #此命令需要在图形界面执行
在“User Account Configuration”出选择“NIS”,填入相应的NIS信息,如下图
点击“Apply”之后,如下图测试:
注:这里要是绑定失败,应该是防火墙的问题,要将防火墙关闭的
(1)查看执行system-config-authentication后,修改的内容:
[root@xuegod64 Desktop]# cat /etc/sysconfig/network
HOSTNAME=xuegod64.cn
NETWORKING=yes
NISDOMAIN=xuegod.cn
[root@xuegod64 Desktop]#
[root@xuegod64 Desktop]# vim /etc/nsswitch.conf # 修改密码验证方式
33 passwd: files nis
34 shadow: files nis
35 group: files nis
3、测试登录
1)xuegod63上远程登录:
[root@xuegod63 ~]# ssh nisuser1@192.168.1.64
nisuser1@192.168.1.64's password:
Could not chdir to home directory /home/nishome/nisuser1: No such file or directory
-bash-4.1$
2)在xueogd64上测试:
[root@xuegod64 Desktop]# su - nisuser1
su: warning: cannot change directory to /home/nishome/nisuser1: No such file or directory
-bash-4.1$
#能使用NIS帐号登录系统,说明配置成功。
3)查看NIS客户服务ypbind的配置文件
[root@xuegod64 ~]# tail /etc/yp.conf #指定了NIS服务器地址 ,查看最后一行,在客户端/etc/yp.conf文件中设置NIS服务器的主机名和NIS域名
domain xuegod.cn server 192.168.1.63
4)重新启动ypbind服务
[root@xuegod64 Desktop]# service ypbind restart 重新启劢ypbind服务
[root@xuegod64 Desktop]# chkconfig ypbind on 设置开机启劢ypbind服务
5)测试修改密码
yppasswd 客户端可以使用yppasswd命令修改帐号和密码
注意:密码长度不能少于6位。此外使用yppasswd命令可以自劢更新NIS数据库中内容。:通过yppasswd(1)修改密码
[root@xuegod63 ~]# ssh nisuser1@192.168.1.64
-bash-4.1$ yppasswd
Changing NIS account information for nisuser1 on xuegod63.cn.
Please enter old password:123456
Changing NIS password for nisuser1 on xuegod63.cn.
Please enter new password:123456789
Please retype new password:123456789
The NIS password has been changed on xuegod63.cn.
(2)使用新密码登录:
[root@xuegod64 ~]# ssh nisuser1@192.168.1.64
nisuser1@192.168.1.64's password: 123456789
Last login: Thu Apr 16 20:11:20 2015 from xuegod64.cn
Could not chdir to home directory /home/nishome/nisuser1: No such file or directory
-bash-4.1$
方法二:
[root@xuegod63 ~]# ssh nisuser1@192.168.1.64
-bash-4.1$ passwd #直接使用passwd命令,新密码要复杂一些
实战:在客户端实现自动挂载NIS用户家目录
描述: xuegod63 配置NFS,把NIS用户的家目录共享出去, NIS用户在客户端登录,使用autofs自动挂载NIS用户家目录。
1、xuegod63 配置NFS
1)安装 xuegod63,配置NFS:
[root@xuegod63 ~]# rpm -ivh /mnt/Packeges/nfs-utils-1.2.3-15.el6.x86_64
[root@xuegod63 ~]# ls /home/nishome/
nisuser1 nisuser2
[root@xuegod63 ~]# vim /etc/exports #写入以下内容
/home/nishome 192.168.1.0/255.255.255.0(rw,sync)
2)启动服务并设置开机自启动
[root@xuegod63 ~]# /etc/init.d/nfs restart
[root@xuegod63 ~]# showmount -e 192.168.1.63
Export list for 192.168.1.63:
/home/nishome 192.168.1.0/255.255.255.0、
[root@xuegod63 ~]# chkconfig nfs on
2、xuegod64 所有的NIS客户端,安装autofs
1)安装autofs
[root@xuegod64 Desktop]# rpm -qf /etc/init.d/autofs
autofs-5.0.5-39.el6.x86_64
[root@xuegod64 Desktop]# yum install -y autofs
2)配置autofs
[root@xuegod64 Desktop]# vim /etc/auto.master #autofs服务主配置文件
8 /home/nishome /etc/auto.nishome #/home/nishome 挂载点
#如果要自动挂载/home/nishome,就去找/etc/auto.nishome这个配置文件。
3)修改配置文件
[root@xuegod64 ~]# vim /etc/auto.nishome
* -rw 192.168.1.63:/home/nishome/& # 目下的所有文件,
#autofs支持挂载目录使用通配符“*”表示,而网络路径中的用户名使用“&”表示 如果进入本地的/home/nishome中,(这个前缀已经在刚才的/etc/auto.master中挃定了),就会把192.168.1.63上/home/nishome/上对应的目录挂过来。
4)重启服务并开机启动:
[root@xuegod64 ~]# /etc/init.d/autofs restart
[root@xuegod64 ~]# chkconfig autofs on
3、测试:
1)Xuegod63上测试远程登录
[root@xuegod63 ~]# ssh nisuser1@192.168.1.64
nisuser1@192.168.1.64's password: 123456
Last login: Thu Apr 16 22:04:25 2015 from xuegod63.cn
[nisuser1@xuegod64 ~]$
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
Nis不仅仅是做集中化认证,还有其他的作用
#在不同的用户家目录下放不同的软件和工具: 登录不同帐号,就可以拥有对应的软件或脚本
[root@xuegod63 ~]# echo " cp -rv /var/www/html /tmp/" > /home/nishome/nisuser1/auto-back.sh
[root@xuegod63 ~]# chmod +x !$
chmod +x /home/nishome/nisuser1/auto-back.sh
(1)让nisuser1作为专门备份用户:
[root@xuegod63 ~]# ssh nisuser1@192.168.1.64
nisuser1@192.168.1.64's password:
[nisuser1@xuegod64 ~]$ ./auto-back.sh
`/var/www/html' -> `/tmp/html'
`/var/www/html/index.html' -> `/tmp/html/index.html'
(2)回顾: mount 挂载nfs文件:
[root@xuegod64 ~]# mount 192.168.1.63:/home/nishome /opt/
[root@xuegod64 ~]# ls /opt/
nisuser1 nisuser2