文章目录

  • 前言
  • 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. 实验环境说明

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

centos7配置lnmp环境 centos7nis配置_配置文件

本次实验所用机器均基于标准的 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

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-slave

Is 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 ... success

Transferring protocols.byname...
Trying ypxfrd ... success

Transferring protocols.bynumber...
Trying ypxfrd ... success

Transferring netid.byname...
Trying ypxfrd ... success

Transferring services.byservicename...
Trying ypxfrd ... success

Transferring services.byname...
Trying ypxfrd ... success

Transferring rpc.bynumber...
Trying ypxfrd ... success

Transferring rpc.byname...
Trying ypxfrd ... success

Transferring hosts.byaddr...
Trying ypxfrd ... success

Transferring hosts.byname...
Trying ypxfrd ... success

Transferring group.bygid...
Trying ypxfrd ... success

Transferring group.byname...
Trying ypxfrd ... success

Transferring passwd.byuid...
Trying ypxfrd ... success

Transferring passwd.byname...
Trying ypxfrd ... success

Transferring ypservers...
Trying ypxfrd ... success


nis-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

图形化加域:

centos7配置lnmp环境 centos7nis配置_运维_02


centos7配置lnmp环境 centos7nis配置_centos7配置lnmp环境_03


centos7配置lnmp环境 centos7nis配置_运维_04

启动 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 数据库。

centos7配置lnmp环境 centos7nis配置_配置文件_05


上面这张图主要看黄色方框标记出来的部分,如果可以看到我们前面在 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 客户机。

centos7配置lnmp环境 centos7nis配置_配置文件_06


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

5.2. 测试 NIS 主从同步

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

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

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

centos7配置lnmp环境 centos7nis配置_centos7配置lnmp环境_07


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

centos7配置lnmp环境 centos7nis配置_自动挂载_08

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

centos7配置lnmp环境 centos7nis配置_centos7配置lnmp环境_09


centos7配置lnmp环境 centos7nis配置_linux_10

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

centos7配置lnmp环境 centos7nis配置_运维_11


centos7配置lnmp环境 centos7nis配置_自动挂载_12


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” 文件,但是目前我还没有实现成功,后期还会继续进行探索,