LDAP学习笔记之四:NIS简解
一、简介
1NIS的产生
正所谓有需求才会有产品,有问题才会有方法去解决,那么NIS是怎么产生的呢?
在一个大型的网域中,如果有多部Linux主机,而且需要每台主机都设定相同的帐号与密码时,是十分麻烦的。
此时,如果能够有一台NIS主控制服务器(master server)来管理该网域中所有主机的帐号密码,
当其他的主机有用户登录的需求时,才到这台服务器上请求相关的帐号密码等使用者资料,这样一来,如果想要增加、修改、删除用户的资料,
只需要到这台服务器上面处理即可,这样就能够大大降低重复设定用户帐号密码的步骤,便于管理。NIS(Network Information Services) Server就可以实现这样的功能。
2什么是NIS
网络信息服务(Network Information Service)是集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理工作,
客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们只简单的使用维护在NIS服务器的文件即可。
用户只需要在nis服务器上面创建,客户端加入nis域,直接可以使用Nis域上的用户来登录客户端。
二、NIS的相关组件
1.服务端
配置文件
主要服务
数据库相关指令
2客户端
配置文件
主要指令
三、NIS环境
1 NIS所需的软件包
yp-tools :提供 NIS 相关的查寻指令功能
ypbind :提供 NIS Client 端的设定软件
ypserv :提供 NIS Server 端的设定软件
portmap :这是 RPC必须的软件!
相关端口:portmap :111,因为NIS、NFS 都是依赖于portmap服务 6.0/7.0 版本用rpcbind取代portmap服务
相关包:ypserv(NIS服务器必需的),ypbind(NIS客户端必需的,默认已安装),yp-tools(NIS的常用工具,默认已安装)
2 NIS Server (Master/Slave)
NIS服务器包括主从服务器两种,从的作用就是备份,即当主服务器出现故障后,从能直接使用
主(Master):将文件建成数据库,并提供给Slave来更新;
从(Slave):以Master的数据库作为本身的数据库来源;
详细:
1. Master先将帐号密码相关文件制作成数据库文件;
2. Master可以主动告诉Slave来更新;
3. Slave亦可以主动前往Master取得更新;
4.若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。
3 NIS Client
1.NIS client 若有登入需求时,会先查询其本的 /etc/passwd, /etc/shadow 等档案;
2.若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询.
3.每个 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』。
四、服务器端搭建
[root@ldap-server1 ~]# yum -y install ypserv ypbind yp-tools rpcbind #安装ypserv服务相关的包
[root@ldap-server1 ~]# vim /etc/sysconfig/network #设置NIS网络名称
NISDOMAIN=ldap-server1.example.com
[root@ldap-server1 ~]# nisdomainname ldap-server1.example.com #设置NIS域名
[root@ldap-server1 ~]# vim /etc/rc.d/rc.local #开机自启
/bin/nisdomainname ldap-server1.example.com
[root@ldap-server1 ~]# vim /etc/ypserv.conf #限制指定网段才能访问
127.0.0.0:*:*:none
192.168.1.0/255.255.255.0:*:*:none
:*:*:deny
[root@ldap-server1 ~]# systemctl start rpcbind #启动NIS相关服务
[root@ldap-server1 ~]# systemctl start yppasswdd
[root@ldap-server1 ~]# systemctl start ypserv
[root@ldap-server1 ~]# /usr/lib64/yp/ypinit -m #初始化数据库 再执行“ctrl+D”,再输入y,如果期间有更改NIS服务器的配置文件,则需要重新初始化数据库
[root@ldap-server1 ~]# systemctl restart rpcbind #初始化数据库后需要重启服务
[root@ldap-server1 ~]# systemctl restart yppasswdd
[root@ldap-server1 ~]# systemctl restart ypserv
[root@ldap-server1 ~]# systemctl enable rpcbind #开机启动
[root@ldap-server1 ~]# systemctl enable yppasswdd
[root@ldap-server1 ~]# systemctl enable ypserv
五、NIS客户端
[root@nis-client ~]# yum -y install ypserv ypbind yp-tools rpcbind #安装ypserv服务相关的包
[root@nis-client ~]# vim /etc/sysconfig/network #设置NIS网络名称
NISDOMAIN=ldap-server1.example.com
[root@nis-client ~]# nisdomainname ldap-server1.example.com #设置NIS域名
[root@ldap-server1 ~]# vim /etc/rc.d/rc.local #开机自启
/bin/nisdomainname ldap-server1.example.com
[root@ldap-server1 ~]# vim /etc/hosts #添加NIS客户端的信息
192.168.1.132 ldap-server1.example.com
192.168.1.133 nis-client.example.com
[root@nis-client ~]# vim /etc/yp.conf
domain ldap-server1.example.com server ldap-server1.example.com
[root@nis-client ~]# systemctl start rpcbind
[root@nis-client ~]# systemctl start ypbind
六、验证
1.服务端 [root@ldap-server1 ~]# for i in {1..9};do useradd nis-user${i};done #创建测试用户 [root@ldap-server1 ~]# for i in {1..9};do echo "123456"|passwd --stdin nis-user${i};done [root@ldap-server1 ~]# /usr/lib64/yp/ypinit -m #新增用户需要重新初始化数据库 [root@ldap-server1 ~]# systemctl restart rpcbind #初始化数据库后需要重启服务 [root@ldap-server1 ~]# systemctl restart yppasswdd [root@ldap-server1 ~]# systemctl restart ypserv 2.客户端 [root@nis-client ~]# yptest [root@nis-client ~]# getent passwd nis-user1 [root@nis-client ~]# su - nis-user1 #客户端切换进NIS域用户,不能正常显示是因为没有服务器的这三个隐藏文件及用户目录 su: 警告:无法更改到 /home/nis-user1 目录: 没有那个文件或目录 /usr/bin/id: cannot find name for group ID 1001 -bash-4.2$ id uid=1001(nis-user1) gid=1001 组=1001
切换NIS域用户告警问题解决思路
使用NFS将服务端的nishome目录共享出去,在客户端将NFS的服务端共享的目录挂载到本地即可,这里我采用自动挂载
1.服务端开启NFS,并共享用户目录,建议调整用户目录,如/nishome,目录权限需要设置其他用户所有权
2.客户端安装autofs包,使用通配符的方式,将服务端的nishome下的用户都挂载到客户端
[root@nis-client ~]# systemctl start autofs
[root@nis-client ~]# vim /etc/auto.nis
* -fstype=nfs 192.168.1.132:/nishome/& #&会自动根据用户名匹配
七、排查问题思路
1.确保客户机和服务器之间的网络良好
2.确保NIS的配置无误
检查客户机和服务器所处的NIS域是否一致,可用nisdomainname检查。
检查服务器端的/etc/ypserv.securenets文件中指定可以访问NIS服务的机子是否包含客户机
检查客户机端的/etc/yp.conf文件中指定的NIS服务器是否正确
检查客户机端的/etc/nsswitch.conf文件的配置
如果在服务器和客户机的配置文件中指定彼此的时候使用了对方的主机名,记得检查/etc/hosts中是否包含了对对方主机名的解析。
3.重启服务
另外:如果上述方法还是行不通的话,可以再试试/bin/systemctl add-wants multi-user.target rpcbind.service
[2],然后重启机器
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少