文章目录

  • 前言
  • 1. 简述 NIS 服务
  • 2. 实验环境说明
  • 3. 配置文件说明
  • 4. 详细配置过程
    • 4.1. 系统基线配置
    • 4.2. 配置 NFS 服务
    • 4.3. 配置 NIS Master 节点
    • 4.4. 配置 NIS Slave 节点
    • 4.5. 配置主从同步
    • 4.6. 配置 NIS 客户机
  • 5. 验证测试
    • 5.1. 测试集中化认证
    • 5.2. 测试 NIS 主从同步
  • 6. 管理工具说明
  • 总结

前言

最近一段时间因为工作需要,接触到了 NIS 这个东东。对于 NIS 服务,我之前从来没有接触过,也没有听到身边有人提起过,直到这次一个偶然的机会,才对 NIS 进行了一番了解,本篇内容就是对这次学习做一个回顾。


1. 简述 NIS 服务

NIS(Network Information Service)即网络信息服务,是 Sun 公司于1985年发布的一项目录服务技术,早前被称之为 “Yellow Page” 即“黄页”;提到黄页,不经让我想到了智能手机刚出来那会儿有个这样的东东,有点古老,反正博主是没有用过~~

简而言之,可以认为 NIS 和 Yellow Page 是一样的,这也是后面我们发现在配置 NIS 服务时,基本上看不到任何与 NIS 字段有关的服务或者配置文件,反而都是以 yp 开头的服务或者配置文件,就是这个原因。

既然 NIS 是个比较古老的东西,为什么还要继续使用它,那它究竟有啥用呢?按照百度百科的说法是:NIS 是用来集中控制几个系统管理数据库的网络用品,NIS 简化了 UNIX 和 LINUX 桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。

对于上面的定义我也没有很好的理解哈,不过这次实验做下来,我自己的理解就是:通过 NIS 服务器,可以管理和维护单台或者多台服务器的账号,对要访问服务器的账号实现集中化认证,而不需要在服务器本地进行验证。

我们可以带着以下几个问题去思考下:

1)一个 hpc 集群中有30台主机,这些主机可以通过相同的用户名和密码进行访问;当我们需要修改用户的密码或者临时增加一个新的账号时,你是愿意一台一台去做修改,还是希望有一个统一管理账号的平台直接完成修改呢?

2)信息化部门有10名员工需要负责维护公司100台主机,原则上每个员工都有自己独立的账号去访问服务器,当出现人事变动时,如何有效管理10名员工对于100台主机的访问呢?比如,当1名新员工取代了老员工时,你是愿意一台一台登录到这些主机上去将旧账号删除再创建新账号,还是希望有一个统一管理账号的平台直接完成修改呢?

3)一个班级有50名学生,每个学生可以通过登录自己的账号完成作业提交,老师可以通过后台系统查看到每位同学提交的作业,这个需求又将如何实现呢?

关于以上这三个问题,我相信,在做完 NIS 实验以后,大家就能感受到 NIS 的好处了。


2. 实验环境说明

本次实验简易拓扑如下图所示:

本次实验所用机器均基于标准的 CentOS 7.6 操作系统,各节点信息如下表所示:

Node Hostname IP Addr Note
NIS Master nis-master 172.16.206.101 NIS 主节点
NIS Slave nis-slave 172.16.206.102 NIS 从节点
NFS Server nfs-server 172.16.206.103 NFS 服务器
Nginx Server nginx 172.16.206.104 NIS 客户机
Email Server email 172.16.206.105 NIS 客户机

3. 配置文件说明

文件名称及路径 文件内容及功能
/etc/hosts 提供主机名与 ip 地址之间的映射关系,是本地的 dns 解析;实验中所有节点都需要进行配置。
/etc/passwd 记录系统中的用户名,以及用户名对应的 UID、GID、Home 目录、默认 bash 等信息。
/etc/group 记录系统中的用户组名,以及用户组对应的 GID、加入该组的所有用户信息。
/etc/shadow 主要记录系统中的用户密码,密码为经过加密处理的字符串。
/etc/sysconfig/network 网络配置文件,可以定义网关、域名、主机名等;NISDOMAIN 需要在该文件中定义。
/etc/yp.conf 是 ypbind 服务的主配置文件,当 nis 客户机加入 nis 域以后会在该文件中记录下 nis 域名以及 nis server 的信息。
/etc/ypserv.conf 是 ypserv 服务的主配置文件,在 nis 服务端(master && slave)进行定义,可以限制 nis 客户机访问的权限。
/var/yp/ypservers 在 nis master 节点使用 ypinit 生成数据库时会生成此文件,记录了 master 节点和 slave 节点的主机名。
/var/yp/Makefile 在 nis 服务端进行配置,定义了生成数据库时触发哪些操作,如生成哪些数据文件、是否启用推送功能等。
/etc/nsswitch.conf 通过此文件定义以什么方式、什么顺序去查找特定类型的信息;当有终端访问 nis 客户机时,客户机首先会从本地用户的相关配置文件中去匹配,当本地没有记录时就会向 nis 服务器发送查询请求,由 nis 进行用户认证;这些匹配查询的动作与该文件的配置信息有关。
/etc/exports 是 nfs 服务端的主配置文件,定义了共享目录以及访问该目录的权限。
/etc/auto.master 是 autofs 服务的主配置文件,定义了自动挂载所要使用的顶级目录以及子配置文件。

4. 详细配置过程

4.1. 系统基线配置

所谓基线配置,即章节2表格中所提及到的5台实验机器均要做如下配置;对于有安全加固要求的,需要针对 firewall 和 selinux 另做配置。

配置1:统一时区和时间。

# timedatectl set-timezone Asia/Shanghai   //设置时区。
# date -s "2022-03-18 09:58:40"   //设置日期和时间。
# clock -w   //将当前系统时间同步到硬件时钟。

配置2:修改主机名。

# hostnamectl set-hostname <要修改成的主机名>
# bash

配置3:删除 CentOS 7 默认安装的 virbr0 设备。

# brctl show
# ifconfig virbr0 down
# brctl delbr virbr0
# systemctl stop libvirtd.service
# systemctl disable libvirtd.service

配置4:配置本地 yum 源。

# mkdir /etc/yum.repos.d/repo_backup
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_backup/
# mkdir /iso   //此目录存放系统镜像文件。
# mkdir /mnt/cdrom# cat > /etc/yum.repos.d/local.repo << EOF   //配置本地 yum 源配置文件。
> [local]
> name=local
> baseurl=file:///mnt/cdrom
> enabled=1
> gpgcheck=0
> EOF# echo "/iso/CentOS-7.6-x86_64-DVD-1810.iso   /mnt/cdrom   iso9660   defaults   0 0" >> /etc/fstab   //设置开机自动挂载。
# yum clean all
# yum repolist

配置5:配置 /etc/hosts 解析。

# vim /etc/hosts   //在文件末尾添加如下解析条目。
172.16.206.101  nis-master
172.16.206.102  nis-slave
172.16.206.103  nfs-server
172.16.206.104  nginx
172.16.206.105  email

配置6:关闭 firewalld 服务。

# systemctl stop firewalld.service
# systemctl disable  firewalld.service

配置7:关闭 selinux 模块。

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# reboot   //重启系统使配置生效。

4.2. 配置 NFS 服务

Step1:安装 nfs && rpcbind 软件包。

[root@nfs-server ~]# rpm -qa |grep -E "nfs-utils|rpcbind"   //先检查系统是否默认安装了软件包。
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64
[root@nfs-server ~]# yum -y install nfs-utils rpcbind   //如果系统默认没有安装,使用 yum 进行安装。

Step2:创建 nfs server 端要共享出去的目录。

[root@nfs-server ~]# mkdir /home/nisuser
[root@nfs-server ~]# chmod 777 /home/nisuser

Step3:编辑 /etc/exports 文件配置 nfs 共享。

[root@nfs-server ~]# vim /etc/exports   //在文件中添加如下配置信息。
/home/nisuser 172.16.206.0/24(rw,sync,no_root_squash)

Step4:启动 nfs 相关服务并设置为开启自启动。

[root@nfs-server ~]# systemctl start rpcbind   //先启动 rpcbind 服务再启动 nfs 服务。
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl enable rpcbind
[root@nfs-server ~]# systemctl enable nfs

Step5:查看 nfs 共享信息。

[root@nfs-server ~]# exportfs -v
/home/nisuser   172.16.206.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)[root@nfs-server ~]# showmount -e 172.16.206.103
Export list for 172.16.206.103:
/home/nisuser 172.16.206.0/24

Step5 返回的结果一致,表示 nfs 服务配置成功;至此,nfs server 端的配置就告一段落。

4.3. 配置 NIS Master 节点

配置 Master 节点其实可以分为两部分,一部分是基于 autofs 实现 nfs server 端共享目录的自动挂载;另一部分,则是安装配置 nis 服务。

首先,我们来配置 autofs 自动挂载。

Step1:安装 autofs 软件包。

[root@nis-master ~]# yum -y install autofs

Step2:创建顶级挂载点。

[root@nis-master ~]# mkdir /nishome

Step3:配置 autofs 主配置文件与子配置文件。

[root@nis-master ~]# echo "/nishome /etc/auto.nisuser" >> /etc/auto.master   //编辑主配置文件。
[root@nis-master ~]# echo "nisuser  -fstype=nfs,rw,sync,no_root_squash  nfs-server:/home/nisuser" >> /etc/auto.nisuser   //创建子配置文件。

Step4:启动 autofs 服务并设置为开启自启动。

[root@nis-master ~]# systemctl start autofs
[root@nis-master ~]# systemctl enable autofs

Step5:验证 autofs 自动挂载。

[root@nis-master ~]# cd /nishome
[root@nis-master nishome]# ls   //当切入到 “/nishome” 目录下查看时,此时该目录下没有任何文件以及文件夹。
[root@nis-master nishome]# cd nisuser   //当切入到 “nisuser” 目录时就会触发 autofs 自动挂载。
[root@nis-master nisuser]# pwd
/nishome/nisuser
[root@nis-master nisuser]# touch test.txt   //验证用户具备创建文件的权限。
[root@nis-master nisuser]# rm -rf test.txt

接下来,我们来配置 nis 服务。

Step6:配置 NISDOMAIN 域名。

[root@nis-master ~]# echo "NISDOMAIN=nis.lab" >> /etc/sysconfig/network
[root@nis-master ~]# reboot
[root@nis-master ~]# nisdomainname   //重启后验证域名是否生效。
nis.lab

Step7:安装 nis 所需的软件包。

[root@nis-master ~]# yum -y install ypserv ypbind yp-tools rpcbind

Step8:编辑 /etc/ypserv.conf 配置文件设置访问规则。

[root@nis-master ~]# vim /etc/ypserv.conf   //在文件末尾添加如下配置信息(该配置文件逐行解释执行)。
dns: no
172.0.0.1/255.255.255.0    : *       : *                : none
172.16.206.0/255.255.255.0 : *       : *                : none
*                          : *       : *                : deny

Step9:启动 nis 相关服务并设置为开机自启动。

[root@nis-master ~]# systemctl start ypserv   //nis 主服务。
[root@nis-master ~]# systemctl start ypxfrd   //用于 master 节点与 slave 节点进行数据库同步的服务。
[root@nis-master ~]# systemctl start yppasswdd   //提供 nis 客户机修改密码的服务。
[root@nis-master ~]# systemctl start rpcbind
[root@nis-master ~]# systemctl enable ypserv ypxfrd yppasswdd rpcbind

Step10:创建用于登录 nis 客户机的账户。

[root@nis-master ~]# useradd -d /nishome/nisuser/user1 -s /bin/bash -m user1
[root@nis-master ~]# useradd -d /nishome/nisuser/user2 -s /bin/bash -m user2
[root@nis-master ~]# echo user@1 |passwd --stdin user1
[root@nis-master ~]# echo user@2 |passwd --stdin user2

至此,nis master 节点的配置就告一段落。

4.4. 配置 NIS Slave 节点

与配置 Master 节点一样,配置 Slave 节点也需要分为两部分,一部分是基于 autofs 实现 nfs server 端共享目录的自动挂载;另一部分,则是安装配置 nis 服务。

首先,我们来配置 autofs 自动挂载。

Step1:安装 autofs 软件包。

[root@nis-slave ~]# yum -y install autofs

Step2:创建顶级挂载点。

[root@nis-slave ~]# mkdir /nishome

Step3:配置 autofs 主配置文件与子配置文件。

[root@nis-slave ~]# echo "/nishome /etc/auto.nisuser" >> /etc/auto.master   //编辑主配置文件。
[root@nis-slave ~]# echo "nisuser  -fstype=nfs,rw,sync,no_root_squash  nfs-server:/home/nisuser" >> /etc/auto.nisuser   //创建子配置文件。

Step4:启动 autofs 服务并设置为开启自启动。

[root@nis-slave ~]# systemctl start autofs
[root@nis-slave ~]# systemctl enable autofs

Step5:验证 autofs 自动挂载。

[root@nis-slave ~]# cd /nishome
[root@nis-slave nishome]# ls   //当切入到 “/nishome” 目录下查看时,此时该目录下没有任何文件以及文件夹。
[root@nis-slave nishome]# cd nisuser   //当切入到 “nisuser” 目录时就会触发 autofs 自动挂载。
[root@nis-slave nisuser]# pwd
/nishome/nisuser
[root@nis-slave nisuser]# touch test.txt   //验证用户具备创建文件的权限。
[root@nis-slave nisuser]# rm -rf test.txt

接下来,我们来配置 nis 服务。

Step6:配置 NISDOMAIN 域名。

[root@nis-slave ~]# echo "NISDOMAIN=nis.lab" >> /etc/sysconfig/network
[root@nis-slave ~]# reboot
[root@nis-slave ~]# nisdomainname   //重启后验证域名是否生效。
nis.lab

Step7:安装 nis 所需的软件包。

[root@nis-slave ~]# yum -y install ypserv ypbind yp-tools rpcbind

Step8:编辑 /etc/ypserv.conf 配置文件设置访问规则。

[root@nis-slave ~]# vim /etc/ypserv.conf   //在文件末尾添加如下配置信息(该配置文件逐行解释执行)。
dns: no
172.0.0.1/255.255.255.0    : *       : *                : none
172.16.206.0/255.255.255.0 : *       : *                : none
*                          : *       : *                : deny

Step9:启动 nis 相关服务并设置为开机自启动。

[root@nis-slave ~]# systemctl start ypserv
[root@nis-slave ~]# systemctl start ypxfrd
[root@nis-slave ~]# systemctl start yppasswdd
[root@nis-slave ~]# systemctl start rpcbind
[root@nis-slave ~]# systemctl enable ypserv ypxfrd yppasswdd rpcbind

至此,nis slave 节点的配置就告一段落。

4.5. 配置主从同步

在 master 节点生成数据库:

[root@nis-master ~]# /usr/lib64/yp/ypinit -m   //生成数据库的命令。At this point, we have to construct a list of the hosts which will run NIS
servers.  nis-master is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a <control D>.next host to add:  nis-master   //默认添加本地(即 master 节点主机名)。next host to add:  nis-slave   //手动添加 slave 节点(即 slave 节点主机名)。next host to add:     //按 “Ctrl + D” 组合键结束输入。
The current list of NIS servers looks like this:nis-master
nis-slaveIs this correct?  [y/n: y]  y   //键入 “y” 表示确认配置信息。
We need a few minutes to build the databases...
Building /var/yp/nis.lab/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/nis.lab'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: Leaving directory `/var/yp/nis.lab'nis-master has been set up as a NIS master server.Now you can run ypinit -s nis-master on all slave server.

从 master 节点同步数据库到 slave 节点:

[root@nis-slave ~]# /usr/lib64/yp/ypinit -s nis-master
We will need a few minutes to copy the data from nis-master.
Transferring mail.aliases...
Trying ypxfrd ... successTransferring protocols.byname...
Trying ypxfrd ... successTransferring protocols.bynumber...
Trying ypxfrd ... successTransferring netid.byname...
Trying ypxfrd ... successTransferring services.byservicename...
Trying ypxfrd ... successTransferring services.byname...
Trying ypxfrd ... successTransferring rpc.bynumber...
Trying ypxfrd ... successTransferring rpc.byname...
Trying ypxfrd ... successTransferring hosts.byaddr...
Trying ypxfrd ... successTransferring hosts.byname...
Trying ypxfrd ... successTransferring group.bygid...
Trying ypxfrd ... successTransferring group.byname...
Trying ypxfrd ... successTransferring passwd.byuid...
Trying ypxfrd ... successTransferring passwd.byname...
Trying ypxfrd ... successTransferring ypservers...
Trying ypxfrd ... successnis-slave's NIS data base has been set up.
If there were warnings, please figure out what went wrong, and fix it.At this point, make sure that /etc/passwd and /etc/group have
been edited so that when the NIS is activated, the data bases you
have just created will be used, instead of the /etc ASCII files.

⚠️ 特别说明:值得一提的是,当 master 节点生成数据库以后,会打包生成一个以 NISDOMAIN 命名的目录,此目录下存放的就是数据库文件;当 slave 节点从 master 节点同步数据以后,也会生成这样一个数据目录。

[root@nis-master ~]# ls -lh /var/yp/nis.lab   //从 master 节点查看数据文件。
total 3.1M
-rw------- 1 root root 133K Mar 18 17:13 group.bygid
-rw------- 1 root root 133K Mar 18 17:13 group.byname
-rw------- 1 root root 134K Mar 18 17:13 hosts.byaddr
-rw------- 1 root root 134K Mar 18 17:13 hosts.byname
-rw------- 1 root root 134K Mar 18 17:13 mail.aliases
-rw------- 1 root root 134K Mar 18 17:13 netid.byname
-rw------- 1 root root 133K Mar 18 17:13 passwd.byname
-rw------- 1 root root 133K Mar 18 17:13 passwd.byuid
-rw------- 1 root root 139K Mar 18 17:13 protocols.byname
-rw------- 1 root root 136K Mar 18 17:13 protocols.bynumber
-rw------- 1 root root 137K Mar 18 17:13 rpc.byname
-rw------- 1 root root 135K Mar 18 17:13 rpc.bynumber
-rw------- 1 root root 535K Mar 18 17:13 services.byname
-rw------- 1 root root 838K Mar 18 17:13 services.byservicename
-rw------- 1 root root 133K Mar 18 17:13 ypservers[root@nis-slave ~]# ls -lh /var/yp/nis.lab   //从 slave 节点查看数据文件。
total 3.1M
-rw------- 1 root root 133K Mar 18 17:16 group.bygid
-rw------- 1 root root 133K Mar 18 17:16 group.byname
-rw------- 1 root root 134K Mar 18 17:16 hosts.byaddr
-rw------- 1 root root 134K Mar 18 17:16 hosts.byname
-rw------- 1 root root 134K Mar 18 17:16 mail.aliases
-rw------- 1 root root 134K Mar 18 17:16 netid.byname
-rw------- 1 root root 133K Mar 18 17:16 passwd.byname
-rw------- 1 root root 133K Mar 18 17:16 passwd.byuid
-rw------- 1 root root 139K Mar 18 17:16 protocols.byname
-rw------- 1 root root 136K Mar 18 17:16 protocols.bynumber
-rw------- 1 root root 137K Mar 18 17:16 rpc.byname
-rw------- 1 root root 135K Mar 18 17:16 rpc.bynumber
-rw------- 1 root root 535K Mar 18 17:16 services.byname
-rw------- 1 root root 838K Mar 18 17:16 services.byservicename
-rw------- 1 root root 133K Mar 18 17:16 ypservers

⚠️ 注意事项:另外需要注意的是,当 master 发生账户变动时,如增删用户或者修改用户密码等,需要在 master 节点重新打包数据库,slave 节点需要重新同步 master 节点的数据库,并在数据同步完成后,slave 节点也需要再打包一次数据库。打包数据库的命令如下所示,具体会在章节5.2中进行详细说明。

[root@nis-master ~]# make -C /var/yp
[root@nis-slave ~]# make -C /var/yp

4.6. 配置 NIS 客户机

本次实验中,一台 Nginx Server 和一台 Email Server 均作为 NIS 客户机。客户机的配置都是一样的,主要分为两部分,一部分是配置 autofs 自动挂载,另外一部分则是将客户机加入 NIS 域。

关于 NIS 客户机加入 NIS 域,有两种常用的方法。一种是通过命令行直接加域,另外一种则是通过图形化界面来进行配置。为了便于对比,博主将使用这两种方法分别为两台客户机进行配置。

首先,nis 客户机都需要配置 autofs 自动挂载。

关于配置 autofs 自动挂载,前面已经做了很多的解释说明,这里咱们就直接进行配置了。

# yum -y install autofs
# mkdir /nishome
# echo "/nishome /etc/auto.nisuser" >> /etc/auto.master
# echo "nisuser  -fstype=nfs,rw,sync,no_root_squash  nfs-server:/home/nisuser" >> /etc/auto.nisuser
# systemctl start autofs
# systemctl enable autofs

通过命令行来配置 nginx server 加域。

先安装 ypbind && yp-tools 软件包:

[root@nginx ~]#  yum -y install ypbind yp-tools

命令行加域:

[root@nginx ~]# authconfig --enablenis --nisdomain=nis.lab --nisserver=172.16.206.101,172.16.206.102 --updateall
getsebool:  SELinux is disabled
getsebool:  SELinux is disabled

启动 ypbind 服务并设置为开机自启动:

[root@nginx ~]# systemctl start ypbind
[root@nginx ~]# systemctl enable ypbind

通过图形化来配置 email server 加域。

先安装 ypbind && yp-tools 软件包。

[root@email ~]# yum -y install ypbind yp-tools

图形化加域:


启动 ypbind 服务并设置为开机自启动:

[root@email ~]# systemctl start ypbind
[root@email ~]# systemctl enable ypbind

至此,通过命令行和图形化都完成了 NIS 客户机加域的操作,那么这些操作究竟都改了些什么呢?下面我们以最重要的两个配置文件进行说明。

修改1:“/etc/sysconfig/network” 文件配置上了 nis 域名。

[root@nginx ~]# cat /etc/sysconfig/network
NISDOMAIN=nis.lab[root@email ~]# cat /etc/sysconfig/network
NISDOMAIN=nis.lab

修改2:“ /etc/yp.conf” 文件配置上了 nis 域名以及 ypserver 的信息。

[root@nginx ~]# tail -n2 /etc/yp.conf
domain nis.lab server 172.16.206.101
ypserver 172.16.206.102[root@email ~]# tail -n2 /etc/yp.conf
domain nis.lab server 172.16.206.101
ypserver 172.16.206.102

5. 验证测试

5.1. 测试集中化认证

测试1:使用 yptest 命令检查 nis 数据库。

上面这张图主要看黄色方框标记出来的部分,如果可以看到我们前面在 nis-master 节点创建的 user1 和 user2 用户,代表 nis 客户机的配置是没有问题的。

由于 Test 3:yp_match 有告警导致在最一行出现了 1 tests failed 报错,但是这个报错是可以忽略的。根据告警信息来看,是指在 passwd.byname 数据文件中没有找到 nobody 的记录,这是因为早期 nobody 用户的 UID 被设置为 65534,而现在 nobody 用户的 UID 被设置为 99(可以通过 id nobody 进行查看),所以没有被记录。

测试2:通过同一账号登录不同的 nis 客户机。

通过上面这张图不难看出,我们使用 user1 账户既可以登录到 nginx 服务器,也可以登录到 email 服务器上。然而 user1 用户并不是在这些客户机上进行创建的,而是在 nis 服务器上进行创建和管理的。因此,当一个局域网内有大批量的服务器使用同一个账号密码登录时,或者需要管理不同的用户账号时,通过 nis 进行集中认证和管理,无疑是一种很好的方式。

5.2. 测试 NIS 主从同步

此项测试主要有两个目的,其一是为了验证 nis 集群的高可用;其二是为了验证当 nis master 节点上发生账号变动时,master 节点需要执行哪些配套动作?而 slave 节点为了保证数据的一致性,又需要做哪些操作?

测试1:当 nis 集群中任何一个节点宕机,仍能对外正常提供服务。

1)关闭 master 节点,nis 服务依然正常:

2)关闭 slave 节点,nis 服务依然正常:

测试2:当账号发生变动时 master 节点必须重新打包数据库,否则配置无法生效。

测试3:当账号发生变动时 salve 节点必须同步 master 节点的数据并重新打包数据库,否则配置无法生效。


6. 管理工具说明

客户机管理工具主要是由 yp-tools 工具包提供的,可以通过如下命令进行查看,本章节仅介绍最常用的几个工具。

[user1@nginx ~]$ rpm -qf `which yptest`
yp-tools-2.14-5.el7.x86_64

工具1:使用 yptest 检查 nis 数据库配置。

[root@nginx ~]# yptest   //具体使用案例在上文都有所体现。

工具2:使用 ypwhich 查询客户机访问 nis 服务器使用的数据文件。

[root@nginx ~]# ypwhich   //查询当前访问的 nis 节点。
nis-slave[root@nginx ~]# ypwhich -x   //查询所使用的数据库文件。
Use "ethers"  for map "ethers.byname"
Use "aliases" for map "mail.aliases"
Use "services"    for map "services.byname"
Use "protocols"   for map "protocols.bynumber"
Use "hosts"   for map "hosts.byname"
Use "networks"    for map "networks.byaddr"
Use "group"   for map "group.byname"
Use "passwd"  for map "passwd.byname"

工具3:使用 ypcat 读取数据库文件。

## 命令格式:ypcat -h <nis server> <db_file>## 命令展示:
[root@nginx ~]# ypcat -h nis-slave group.byname
user1:!:1000:
user2:!:1001:
user3:!:1002:
user4:!:1003:

工具4:使用 yppasswd 修改用户的密码。

[user1@nginx ~]$ whoami
user1
[user1@nginx ~]$ yppasswd   //直接在客户机上修改 user1 的密码。
Changing NIS account information for user1 on nis-master.
Please enter old password:   //输入旧密码进行验证。
Changing NIS password for user1 on nis-master.
Please enter new password:   //设置新密码。
Please retype new password:   //确认新密码。The NIS password has been changed on nis-master.   //值得注意的是,在客户机修改的密码只会同步刷新 nis master 节点的数据库文件。

注意事项:使用 yppasswd 工具修改用户密码,只会将修改信息同步刷新到 master 节点,而不会主动刷新到 slave 节点。因此,当使用 yppasswd 工具修改用户密码后,需要在 slave 节点重新同步数据并打包数据库;否则,即使密码修改成功,那些通过访问 slave 节点完成认证的客户机,依然可以使用原来的账号和密码完成登录。


总结

这次实验中依然存在一些问题,比如如何实现 master 节点与 slave 节点的自动同步,又比如有没有一种方法可以在访问客户机时,直接将需要挂载的目录推送过去而不需要每台客户机都进行 autofs 配置等等。也曾看过一些大佬写的文章,说是需要修改 “/var/yp/Makefile” 文件,但是目前我还没有实现成功,后期还会继续进行探索,也希望可以和大家一起交流下这方面的经验。以上如有不当之处,欢迎指正。


基于 CentOS 7 配置 NIS 主从实现集中化认证相关推荐

  1. 基于centos 安装配置Docker ssl

    基于centos 安装配置Docker ssl Docker SSL配置 生成证书 配置Docker启用TLS 测试 参考 Docker SSL配置 记录基于centos配置docker ssl访问 ...

  2. 基于centos 安装配置环境

    基于centos 安装配置环境 服务器环境配置 docker openjdk8 docker-nginx docker-mysql docker-redis 服务器环境配置 记录服务器的环境配置,包括 ...

  3. 基于CentOS 7配置Nginx反向代理

    Nginx作为反向代理服务器被广泛使用在各大互联网企业.它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器.该方式使的整个站点请求性能得以极 ...

  4. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

  5. 基于CentOS 7配置Nginx正向代理

    Nginx是一款以轻量级.低内存开销.支持缓存.支持反向代理,负载均衡,电子邮件服务而著称.对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器.本文简要描述这个正向代理功能并给出演示,供大家参 ...

  6. 路由器snmp配置_基于keepalived配置数据库主从实现高可用

    基于keepalived配置数据库主从实现高可用 使用keepalived来监听端口,实现数据库的高可用.实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后, ...

  7. postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

    基于windows平台的postgresql主从数据库流备份配置 因工作需要,需要搞pg数据库的主从备份,领导给了个方向使用流备份,于是开始朝着这个方向进发. 鸣谢大佬A_ccelerator的博客 ...

  8. mysql二进制文件复制_MySQL 主从复制:基于二进制文件复制配置详解

    ##MySQL-主从复制:基于二进制文件复制详解 ###前言 主从复制是指把一个MySQL的数据库服务器作为主服务器(master),然后把master的数据复制到一个或者多个MySQL数据库服务器作 ...

  9. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群 1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 1 ...

  10. 基于CentOS 7 安装Percona XtraDB Cluster(PXC) 5.7

    转载来源:https://blog.csdn.net/robinson_0612/article/details/78962190 基于CentOS 7 安装Percona XtraDB Cluste ...

最新文章

  1. 基于SNN脉冲神经网络的FPGA实现介绍
  2. c++将引用作为函数的参数---6
  3. 【Quartz】Spring3.2.9 + Quqrtz2.2.1 实现定时实例
  4. Java枚举类型(enum)详解
  5. IOS UIViewController API,生命周期详解
  6. vue.js入门环境搭建
  7. envi窗口滤波_高光谱ENVI图像处理之滤波
  8. 异常为当IDENTITY_INSERT设置为OFF时 的解决
  9. HTML、CSS、JavaScript网页制作从入门到精通 (刘西杰) pdf扫描版彩色版​
  10. HDU2837 Calculation(指数循环节)题解
  11. ES6、7学习笔记(尚硅谷)-3-变量的解构赋值
  12. adb安装apk文件时的常见的错误及解决方法
  13. Paper reading (三十一):Personalized Nutrition by Prediction of Glycemic Responses(overview)
  14. 决策树(分类树)——红酒数据(分类树的八个参数,一个属性,四个接口,以及绘图所用的代码)
  15. c 语言字体怎么改,Notepad++设置字体语言格式方法介绍
  16. python导入mat文件_从.mat文件导入复杂数据作为numpy数组
  17. Qt:在QML中自定义贝塞尔动画曲线
  18. 桥牌坐庄训练bm2000 level3闯关记录——A5
  19. 全球与中国1,6-己二醇二甲基丙烯酸酯(HDDMA)市场深度研究分析报告
  20. Linux安装Mycat1.6.7.6实现Mysql数据库读写分离

热门文章

  1. Python 网络编程入门——用 Socket 做一个风花雪月服务器
  2. python 005 __ 小斌文档 | 函数的定义和调用
  3. java日志篇(2)-JUL(java.util.logging)
  4. 关于流式计算和Excel的练习题
  5. 服装行业ERP体系的主要好处
  6. oa处理会签流程图_关于合同会签OA流程使用说明
  7. c语言写街机,C 实现 Atari 经典街机游戏《飞天蜈蚣》
  8. 《Word中从正文开始设置页码》
  9. 双线双IP和BGP双线有什么区别?
  10. VS2008SP1的MFC测试-(OFFICE2007风格)Ribbon风格(DJ尐舞图形画板2008)