文章目录
- 前言
- 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
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
图形化加域:
启动 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” 文件,但是目前我还没有实现成功,后期还会继续进行探索,