NIS服务器主要用来对用户的账户与密码进行统一管理,它存在的意义:假设公司内部共有20台Linux主机,对于公司内的员工来说,他们可以访问所有的这20台Linux主机,我们假设公司某位成员需要修改密码,为了使能够登录所有的主机,传统的思维就是要分别到这20太Linux主机上执行passwd,这样是非常低效的,对管理人员来说是非常不方便的事情,因此NIS服务就是来解决这个问题的,它的原理是,将所有用户的帐号密码等信息都保存在NIS服务器上,当某位用户登录其中的一台Linux主机时,在进行帐号密码验证时,登录的那台主机会向NIS服务器发送验证请求,如果正确则用户登录成功,反之用户登录不成功。
NIS服务器是将用户的帐号和密码保存在数据库文件中,NIS客户机向它发送请求是需要通过RPC(远程过程调用)这个协议。
所有的NIS客户机都是请求的一台NIS服务器,因此就可以实现一个帐号可以登录所有Linux主机了,而且当用户修改了自己的密码后,它会同步到NIS服务器的数据库文件中,这样就完成了一改多改的效果,对与帐号管理非常方便。
一、NIS服务器端的配置
1. 确定所需软件已经安装
yp-tools:提供NIS相关的查询命令
ypbind: 因为Client与Server是要通信的,因此需要bind
ypserv: NIS Server端的设置软件
rpcbind:RPC必须的软件
2. 开始配置NIS服务器
1> 设置NIS服务器的域名
nisdomainname domainname
vi /etc/sysconfig/network
:NISDOMAIN=domainname 设置域名
:YPSERV_ARGS="-p 1011" 设置NIS每次都在固定的端口,即:1011启动,这是为了将来方便使用iptables直接管理NIS
#开机自动设置域名
vi /etc/rc.local
/sbin/nisdomainname domainname #添加
2>配置主文件/etc/ypserv.conf
[主机名/IP] [NIS域名] [可用数据库名称] [安全限制]
192.168.171.0/255.255.255.0 : * : * : none
[安全限制]: 包括没有限制none , 仅能使用小于1024的端口port , 以及拒绝deny
3> 设置主机名与IP的对应
vi /etc/hosts
192.168.171.135 nisserver
192.168.171.136 nisclient01
192.168.171.137 nisclient02
...
所有主机的IP与主机名的对应都要写在这里面
4> 启动与查看相关的服务
vi /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012" 找到该位置,修改成这样
/etc/init.d/ypserv start
/etc/init.d/yppasswdd start
chkconfig ypserv on # 设置为开机自启动
chkconfig yppasswd on
rpcinfo -u localhost ypserv
#出现下面的字样,说明是正常的#
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
5> 处理帐号并建立数据库
useradd -u 1001 testuser01
useradd -u 1002 testuser02
useradd -u 1003 testuser03
echo testuser01 | echo passwd --stdin testuser01
echo testuser02 | echo passwd --stdin testuser02
echo testuser03 | echo passwd --stdin testuser03
#这样就建好了三个用户 testuser01 testuser02 testuser03 密码和用户名相同 -u 代表指定uid
#接下来将建立的帐号与密码数据转换成数据库
/usr/lib64/yp/ypinit -m
注意:如果用户密码发生过变化,就需要重新制作数据库,重新启动ypserv 以及yppasswdd.
比如在服务器端添加了用户useradd somebody或者修改了密码passwd somebody 都需要重新创建数据库,即:/usr/lib/yp/ypinit -m
6> 防火墙设置
这里先将NIS服务器的防火墙关了: service iptables stop