凉城旧巷
Python从入门到自闭,Java从自闭到放弃,数据库从删库到跑路,Linux从rm -rf到完犊子!!!

NIS用户同步

一、NIS介绍

NIS(network information service)网络信息服务,模式是C/S 模式。NIS是集中控制几个系统管理数据库的网络产品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd。管理员只需要简单的使用维护NIS服务器的文件即可。

Linux系统中用户按地域分两类: 本地用户, 远程用户(NIS,LDAP,AD)

ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所有客户端的查询都发往NIS服务器。

ypserv是回答客户端查询的服务器进程。

 

二、应用场景

在一个大型的网域当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的账号与密码时,如果能够有一部账号主控服务器来管理网域中所有主机的账号, 当其他的主机有用户登入的需求时,才到这部主控服务器上面要求相关的账号、密码等用户信息, 如此一来,如果想要增加、修改、删除用户数据,只要到这部主控服务器上面处理即可, 这样就能够降低重复设定使用者账号的步骤了。

一般一个稍微大点儿的环境中,我们 NIS 的组成有:一台 NIS Master Server、一台或者多台 NIS Slave Server、多台 NIS Client。这样组成了一个稍微“冗余”的结构,可以避免核心的 NIS Master 故障后,整个网络无法进行登录。

 

三、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配置

关闭selinux

#1. vim /etc/selinux/config

将 SELINUX=enforcing 改为 SELINUX=disabled

#2.生效修改
1)重启
2)或者手动临时修改,待下一次重启生效 
[root@master ~]# setenforce 0

(一)NIS Master服务端配置

1、安装软件包

yum install -y ypserv rpcbind yp-tools

 

2、设置NIS域名

NIS是会通过域名来分辨不同账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名

1)永久生效

# 写入文件不会立即生效
[root@master ~]# echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
# 生效
# 重启,会自动生效
[root@master ~]# reboot -h now

# 或手动设置一次
[root@master ~]# nisdomainname eda.com
# 查看方式,同hostname
[root@master ~]# nisdomainname
eda.com

 

3、设置域名解析

/etc/hosts文件:记录IP地址主机对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要每一台NIS客户端的主机记录。

 

4、设置client访问NIS服务器的权限

  • /etc/ypserv.conf可以配置访问NIS服务器的权限

  • ypserv.conf文件是逐行解释执行,所以要注意设置顺序

参数 格式为:
Host 指定客户端,可以指定具体IP地址,也可以挃定一个网段
Domain 设置NIS域名,这里的NIS域名和DNS中的域名并没有关系。
Map 设置可用数据库名称,可以用“*”代替所有数据库
Security 安全性设置。主要有none、port和deny三种参数设置。
none 没有任何安全限制,可以连接NIS服务器。
port 只允许小于1024以下的端口连接NIS服务器。
deny 拒绝连接NIS服务器。

例如:允许所有内网客户端可以连接NIS服务器,除此之外的客户端都拒绝连接。

 

5、修改Makefile

  • 如果是一主多从,修改/var/yp/MakefileNOPUSH=false。表示同步到从服务器
  • 如果只有一台服务端服务器,确认/var/yp/MakefileNOPUSH=true,默认NOPUSH=true

 

6、配置push到从服务器——一主多从模式需配置

/var/yp/ypservers中加入从服务器的hostname

 

 

7、 启动服务,建立NIS数据库

1)启动服务

  • yppasswdd.service:与 NIS 客户端有关,允许用户可以在客户端修改服务器上的密码
[root@master ~]# systemctl start rpcbind.service
[root@master ~]# systemctl start ypserv.service
[root@master ~]# systemctl start yppasswdd.service

# 设置开机自己
[root@master ~]# systemctl enable rpcbind.service ypserv.service yppasswdd.service

2)创建数据库

# -m  代表初始化主服务器
[root@master ~]# /usr/lib64/yp/ypinit -m

3)查看数据库

#这里eda.com为之前设置的 NIS域名
[root@master ~]# ls /var/yp/eda.com

# 下图目录中的文件就是创建数据库后产生的maps

4)检查服务

[root@master ~]# rpcinfo -u localhost ypserv

 

(二)NIS Slave服务端配置

  • 一般只有在大型环境中,才会配置NIS 服务端为一主多从的架构

1、安装软件包——同master

yum install -y ypserv rpcbind yp-tools

 

2、设置NIS域名——同master

NIS是会通过域名来分辨不同账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名

# 写入文件不会立即生效
[root@slave ~]# echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
# 生效
# 重启,会自动生效
[root@slave ~]# reboot -h now

# 或手动设置一次
[root@slave ~]# nisdomainname eda.com
# 查看方式,同hostname
[root@slave ~]# nisdomainname
eda.com

 

3、设置域名解析——同master

/etc/hosts文件:记录IP地址主机对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要每一台NIS客户端的主机记录。

 

4、设置client访问NIS服务器的权限——同master

  • /etc/ypserv.conf可以配置访问NIS服务器的权限

  • ypserv.conf文件是逐行解释执行,所以要注意设置顺序

参数 格式为:
Host 指定客户端,可以指定具体IP地址,也可以挃定一个网段
Domain 设置NIS域名,这里的NIS域名和DNS中的域名并没有关系。
Map 设置可用数据库名称,可以用“*”代替所有数据库
Security 安全性设置。主要有none、port和deny三种参数设置。
none 没有任何安全限制,可以连接NIS服务器。
port 只允许小于1024以下的端口连接NIS服务器。
deny 拒绝连接NIS服务器。

例如:允许所有内网客户端可以连接NIS服务器,除此之外的客户端都拒绝连接。

 

5、确认Makefile

确认/var/yp/MakefileNOPUSH=true,默认为 true。表示不同步到从服务器,在从服务器中应当设置为true

 

6、 启动服务,建立NIS数据库

1)启动服务

  • yppasswdd.service:与 NIS 客户端有关,允许用户可以在客户端修改服务器上的密码
[root@slave ~]# systemctl start rpcbind.service
[root@slave ~]# systemctl start ypserv.service
[root@slave ~]# systemctl start yppasswdd.service

# 设置开机自启
[root@slave ~]# systemctl enable rpcbind.service ypserv.service yppasswdd.service

2)创建数据库

# -s  代表初始化从服务器,后面跟上主服务器的hostname
[root@slave ~]# /usr/lib64/yp/ypinit -s master

3)查看数据库

#这里eda.com为之前设置的 NIS域名
[root@slave ~]# ls /var/yp/eda.com

# 下图目录中的文件就是创建数据库后产生的maps

4)检查服务

[root@slave ~]# rpcinfo -u localhost ypserv

 

(三)NIS客户端配置

方式一:手动修改

1、安装软件包

yum install -y ypbind yp-tools

 

2、设置域名解析

/etc/hosts文件:记录IP地址主机对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要每一台NIS客户端的主机记录。

 

3、设置NIS域名

NIS是会通过域名来分辨不同账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名

# 写入文件不会立即生效
[root@slaver3 ~]# echo "NISDOMAIN=eda.com" >> /etc/sysconfig/network
# 生效
# 重启,会自动生效
[root@slaver3 ~]# reboot -h now

# 或手动设置一次
[root@slaver3 ~]# nisdomainname eda.com
# 查看方式,同hostname
[root@slaver3 ~]# nisdomainname
eda.com

 

4、加入建立好的NIS域

修改/etc/yp.conf,加入NIS域

  • 如果没有配置过域名解析,可以用IP代替HOSTNAME

 

5、配置nsswitch.conf

 

6、启动服务

systemctl start ypbind.service

systemctl enable ypbind.service

 

方式二:工具修改(推荐)

  • 安装软件包

    yum install -y ypbind
    

使用系统提供的工具setup来设定,工具修改的内容就是方式一中对应的内容

根据图所示,选择Authentication configuration --> User NIS --> 输入NIS域名和Server的IP,完成以后如果立马跳回到Choose a Tool说明设置成功

  • 如果/etc/hosts中配置了域名,在 输入NIS域名和Server的IP可以用域名代替IP

 

五、测试

1、客户端指向NIS Maser服务端

  • 在Master服务端修改用户和密码信息
  • 手动更新数据库:cd /var/yp && make

2、客户端指向NIS Slave服务器——一主多从模式

  • 在Master服务端修改用户和密码信息
  • 手动更新Master服务端数据库:cd /var/yp && make
  • 在Slave服务端要先同步Master:/usr/lib/yp/ypinit -s <master_hostname>
  • 在Slave服务端更新数据库:cd /var/yp && make

 

六、NIS命令

  • yp-tools软件包中自带一些测试工具

1、yptest

测试数据库内容等所有与NIS相关的信息

 

2、ypwhich

ypwhich命令主要测试NIS客户端与服务器之间通信使用的是哪些数据库文件

  • 只使用ypwhich命令只显示NIS主机名
  • ypwhich -x则显示NIS客户端与服务器通信使用了哪些数据库文件

 

3、ypcat

ypcat命令可以查看NIS服务器上使用者帐号及密码信息,也可以查看NIS服务器上的/etc/hosts文件记录哪些主机信息

 

4、yppasswd

客户端可以使用yppasswd命令修改帐号和密码(修改其他用户密码的时候要求输入root密码)

修改密码时报错:

(1)yppasswd:yppasswdd not running on NIS master host

在服务器上运行该命令正常。

这是因为客户端不能解析到NIS服务器的IP地址,只要你在客户端的 /etc/hosts文件里面添加IP对应关系即可。

(2)yppasswd:yppasswdd not running on NIS master host ("hostname").

这时候你ping下hostname看解析的为多少,如果为127.0.0.1的话,那就赶紧在/etc/hosts中加入IP hostname,如果解析正常,自然不会报错了。

 

posted on 2022-04-26 18:10  凉城旧巷  阅读(3378)  评论(0编辑  收藏  举报