# 14.3 NIS Client 端的设定
## 14.3 NIS Client 端的设定
我们知道网络联机是双向的,所以 NIS server 提供数据库档案,NIS client 当然也需要提供一些联机的软件啰!这个联机的软件就是 ypbind 啦!此外,如同[图 14.1-1](#fig14.1-1) 的介绍,在 NIS client 端有登入需求时,NIS client 基本上还是先搜寻自己的 /etc/passwd, /etc/group 等数据后才再去找 NIS server 的数据库啊!所以 NIS client 最好能够将本身的账号密码删除到仅剩下系统账号,亦即 UID, GID 均小于 500 以下的账号即可, 如此一来既可让系统执行无误,也能够让登入者的信息完全来自 NIS server ,比较单纯啦!
**Tips:** 事实上,你想要让 NIS 服务器写入的各项账号数据都在 NIS server 的 /var/yp/Makefile 那个档案设定的! 你可以进入该档案搜寻一下 UID 就知道了! ^\_^
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
- - - - - -
### 14.3.1 NIS client 所需软件与软件结构
NIS client 端所需要的软件仅有:
- ypbind
- yp-tools
yp-tools 是提供查询的软件,至于 ypbind 则是与 ypserv 互相沟通的客户端联机软件啦! 另外,在 CentOS 当中我们还有很多配置文件是与认证有关的,包含 ypbind 的配置文件时, 在设定 NIS client 你可能需要动到底下的档案:
- /etc/sysconfig/network:就是 NIS 的领域名嘛!
- /etc/hosts:至少需要有各个 NIS 服务器的 IP 与主机名对应;
- /etc/yp.conf:这个则是 ypbind 的主要配置文件,里面主要设定 NIS 服务器所在
- /etc/sysconfig/authconfig:规范账号登入时的允许认证机制;
- /etc/pam.d/system-auth :这个最容易忘记!因为账号通常由 PAM 模块所管理, 所以你必须要在 PAM 模块内加入 NIS 的支持才行!
- /etc/nsswitch.conf :这个档案可以规范账号密码与相关信息的查询顺序,默认是先找 /etc/passwd 再找 NIS 数据库;
另外, NIS 还提供了几个有趣的程序给 NIS 客户端来进行账号相关参数的修改,例如密码、shell 等等, 主要有底下这几个指令:
- /usr/bin/yppasswd :更改你在 NIS database (NIS Server 所制作的数据库) 的密码
- /usr/bin/ypchsh :同上,但是是更改 shell
- /usr/bin/ypchfn :同上,但是是更改一些用户的讯息!
OK!那么底下就让我们开始来设定 NIS 客户端吧!^\_^
- - - - - -
### 14.3.2 NIS client 的设定与启动
启动 NIS client 的设定就简单多了!最主要是加入 NIS domain 当中,然后再启动 ypbind 即可。 虽然你可以手动去修改所有的配置文件,然而近期以来的 Linux distributions 账号处理机制越来越复杂, 所以如果你想要手动修改所有配置文件,恐怕会疯掉的~因此,这里建议你使用系统提供的工具来设定, 至于一些重要配置文件,最后有机会再去参考一下即可。
那么 CentOS 6.x 提供了什么好用的管理工具呢?很简单,就利用 setup 这个指令即可!输入 setup 就会出现如下的图示, 然后依序这么处理就好了呦!
![](https://box.kancloud.cn/2016-05-13_5735da727638f.gif)
图 14.3-1、利用 setup 进入 authconfig 认证项目
记得在出现上图 14.3-1 后,选择认证设定,如果是出现英文的话,那么你就得要选择『Authentication configuration』的项目,之后就会进入下面的画面:
![](https://box.kancloud.cn/2016-05-13_5735da7286e0c.gif)
图 14.3-2、进入 authconfig 之后,选择 NIS 项目
因为我们要用 NIS 作为登入者身份验证的机制,因此就得要选择 NIS 项目,如果是英文的话,得要选择『Use NIS』项目即可。
![](https://box.kancloud.cn/2016-05-13_5735da72abcbd.gif)
图 14.3-3、填写 NIS 领域以及 NIS 服务器的 IP 即可
最后再填写 NIS 网域 (Domain) 以及 NIS 服务器的 IP (Server),按下确定即可。如果系统很快的就跳回图 14.3-1 的画面, 代表你的设定理论上是没有问题的。如果一直卡在如下的画面中:
```
正在激活 rpcbind: [ 确定 ]
正在关闭 NIS 服务: [ 确定 ]
正在启动 NIS 服务: [ 确定 ]
正在绑定 NIS 服务:....... <==这里一直卡住,没办法结束
```
上述的数据就是出问题啦!那代表你的 NIS client 没有办法连接上 NIS server,最常发生的就是服务器的防火墙忘记放行,或者是你客户端输入服务器 IP 时,打错数字了~ 那也是很常发生的错误啦!这时请自行去修改一番吧!那么这个 setup 到底做了什么修改呢?我们也来看看几个被改掉的重要配置文件吧:
```
[root@clientlinux ~]# cat /etc/sysconfig/network
HOSTNAME=clientlinux.centos.vbird
NETWORKING=yes
GATEWAY=192.168.100.254
NISDOMAIN=vbirdnis <==这个玩意儿会主动的被建立起来
[root@clientlinux ~]# cat /etc/yp.conf
....(前面省略)....
domain vbirdnis server 192.168.100.254 <==主动建立这玩意儿~
[root@clientlinux ~]# vim /etc/nsswitch.conf
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
# 上面几个项目是比较重要的,包括身份参数、密码、群组名、主机名与 IP 对应数据等。
# 你会看到,每个项目后面都会接着 nis ,所以 nis 有被支持啰!
```
因为更动到的档案实在太多了,所以鸟哥还是建议使用 setup 来调整即可。但是,如果你真的想要手动处理的话, 那么你必须要手动的修改底下这些档案:
- /etc/sysconfig/network (加入 NISDOMAIN 项目)
- /etc/nsswitch.conf (修改许多主机验证功能的顺序)
- /etc/sysconfig/authconfig (CentOS 的认证机制)
- /etc/pam.d/system-auth (许多登入所需要的 PAM 认证过程)
- /etc/yp.conf (亦即是 ypbind 的配置文件)
- - \*
### 14.3.3 NIS client 端的检验: yptest, ypwhich, ypcat
如何确定 NIS client 已经连上 NIS server 呢?基本上,只要刚刚使用 setup 去设定时,最后的步骤并没有被卡住, 那应该就是顺利成功啦!该步骤会自动启动 rpcbind 与 ypbind 两个服务呦!那如何确认数据传送是正确的? 简单的要命啊!你可以利用 id 这个指令直接检查 NIS server 有的,但是 NIS client 没有的账号,如果有出现该账号的相关 UID/GID 信息时,那表示数据传输也是正确的。 除此之外,我们还可以透过 NIS 提供的相关检验功能来检查喔!底下分别来瞧一瞧:
- 利用 yptest 检验数据库之测试:
直接在 NIS client 输入 yptest 即可检查相关的测试数据,如下所示:
```
[root@clientlinux ~]# yptest
Test 1: domainname
Configured domainname is "vbirdnis"
Test 2: ypbind
Used NIS server: www.centos.vbird
Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)
....(中间省略)....
Test 6: yp_master
www.centos.vbird
....(中间省略)....
Test 8: yp_maplist
passwd.byname
protocols.byname
hosts.byaddr
hosts.byname
....(中间省略)....
Test 9: yp_all
nisuser1 nisuser1:$1$U9Gccb60$K5lDQ.mGBw9x4oNEkM0Lz/:1001:1001::/home/nisuser1:/bin/bash
....(中间省略)....
1 tests failed
```
从这个测试当中我们可以发现一些错误,就是在 Test 3 出现的那个警告信息啦。还好,那只是说没有该数据库而已~ 该错误是可以忽略的。重点在第 9 个步骤 yp\_all 必须要有列出你 NIS server 上头的所有帐户信息,如果有出现账号相关数据的话,那么应该就算验证成功了!
**Tips:** 比较有问题的是第三步骤,他会出现在 passwd.byname 当中找不到 nobody 的字样。这是因为早期的 nobody 之 UID 都设定在 65534 ,但 CentOS 则将 nobody 设定为系统账号的 99 ,所以当然不会被记录,也就出现这一个警告。不过,这个错误是可忽略的啦!
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
- 利用 ypwhich 检验数据库数量
单纯使用 ypwhich 的时候显示的是『NIS Client 的 domain』名称,而当加入 -x 这个参数时, 则是显示『NIS Client 与 Server 之间沟通的数据库有哪些?』你可以这样测试哩!
```
[root@clientlinux ~]# ypwhich -x
Use "hosts" for map "hosts.byname"
Use "group" for map "group.byname"
Use "passwd" for map "passwd.byname"
....(以下省略)....
```
由上面我们可以很清楚的就看到相关的档案啦!这些数据库档案则是放置在我的 NIS Server 的 /var/yp/vbirdnis/\* 里面啰!
- 利用 ypcat 读取数据库内容
除了 yptest 之外,你还可以直接利用 ypcat 读取数据库的内容喔!一般作法是这样:
```
[root@clientlinux ~]# ypcat [-h nisserver] [数据库名称]
选项与参数:
-h nisserver :如果有设定的话,指向某一部特定的 NIS 服务器,
如果没有指定的话,就以 ypbind 之设定为主;
数据库名称:亦即在 /var/yp/vbirdnis/ 内的档名啊!例如 passwd.byname
# 读出 passwd.byname 的数据库内容
[root@clientlinux ~]# ypcat passwd.byname
```
这三个指令在进行 NIS Client 端的检验时,是相当有用的喔!不要忽略了他的存在啊!尤其是刚架设好 NIS Client 时,一定要使用 yptest 去检查看看有没有设定错误喔!根据屏幕显示的讯息去一个一个校正错误才行啊!
- - - - - -
### 14.3.4 使用者参数修改: yppasswd, ypchfn, ypchsh
好了,完成了上述的设定后,你的 NIS server/client 的账号已经同步了!真是高兴不是吗? 不过,还有个挺大的问题,那就是...使用者如何在 NIS client 修改他自己的登入参数,例如密码、shell 等等? 因为 NIS client 是藉由数据库来取得用户的账号密码,那如何在 NIS 客户端处理账号密码的订正?
问的好!这也是为何我们需要在 NIS server 启动 yppasswdd 这支服务的主要用意! 因为 yppasswdd 可以接收 NIS client 端传来的密码修改,藉此而处理 NIS server 的 /etc/passwd, /etc/shadow , 然后 yppasswdd 还能够重建密码数据库,让 NIS server 同步更新数据库!真是很不错啊! ^\_^
那该如何下达指令呢?很简单啊!透过 yppasswd, ypchsh, ypchfn 来处理即可。这三个指令的对应是:
- yppasswd :与 passwd 指令相同功能;
- ypchfn :与 chfn 相同功能;
- ypchsh :与 chsh 相同功能。
因为功能相当,所以鸟哥这里仅说明一下 yppasswd 而已。假设你已经登入 NIS client 那部主机, 并且是以 nisuser1 这个使用者登入的,记住,这个用户相关数据仅在 NIS server 上。 接下来,这个使用者可以下达 yppasswd ,如下所示:
```
[root@clientlinux ~]# grep nisuser /etc/passwd <==不会出现任何讯息,因为无此账号
[root@clientlinux ~]# su - nisuser1 <==直接切换身份看看!
su: warning: cannot change directory to /home/nisuser1: No such file or directory
-bash-4.1$ id
uid=1001(nisuser1) gid=1001(nisuser1) groups=1001(nisuser1)
# 因为我们 client.centos.vbird 仅有帐户信息,并没有用户家目录,
# 所以就会出现如上的警告,因此才需要用 id 验证,并且需要加挂 NFS 嘛!
# 仔细看,现在的身份确实是 nisuser1 喔!确实有连上 NIS server 啦!
-bash-4.1$ yppasswd
Changing NIS account information for nisuser1 on www.centos.vbird.
Please enter old password: <==这里输入旧密码
Changing NIS password for nisuser1 on www.centos.vbird.
Please enter new password: <==这里输入新密码
Please retype new password: <==再输入一遍
The NIS password has been changed on www.centos.vbird.
-bash-4.1$ exit
```
嘿嘿!如何,这样就更新了 NIS server 上头的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by\* 的数据库, 简单吧!一下子就同步化了。不过,如果要教育使用者使用 yppasswd 的话,他可能不太能适应, 不要紧,你可以透过修改 alias 或者是置换掉 /usr/bin/passwd 这支程序即可!那现在让我们回到 NIS 服务器端看看真的有更动到数据库吗?
```
[root@www ~]# ll /var/yp/vbirdnis/
-rw-------. 1 root root 13836 Jul 28 13:10 netid.byname
-rw-------. 1 root root 14562 Jul 28 13:29 passwd.byname
-rw-------. 1 root root 14490 Jul 28 13:29 passwd.byuid
-rw-------. 1 root root 28950 Jul 28 13:10 protocols.byname
# 仔细看,就是那个密码档案被更动过~时间已经不一样了!再看看登录档吧!
[root@www ~]# tail /var/log/messages
Jul 28 13:29:14 www rpc.yppasswdd[1707]: update nisuser1 (uid=1001) from host
192.168.100.10 successful.
```
最终从登录档里面,我们也能够得到相关的记录!这样就非常完美啦! ^\_^
- - - - - -
- 鸟哥的Linux私房菜:服务器架设篇 第三版
- 第一部份:架站前的进修专区
- 作者序
- 第一章、架设服务器前的准备工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架设服务器流程
- 1.3 自我评估是否已经具有架站的能力
- 1.4 本章习题
- 第二章、基础网络概念
- 2.1 网络是个什么玩意儿
- 2.2 TCP/IP 的链结层相关协议
- 2.3 TCP/IP 的网络层相关封包与数据
- 2.4 TCP/IP 的传输层相关封包与数据
- 2.5 连上 Internet 前的准备事项
- 2.6 重点回顾:
- 2.7 本章习题
- 2.8 参考数据与延伸阅读
- 第三章、局域网络架构简介
- 3.1 局域网络的联机
- 3.2 本书使用的内部联机网络参数与通讯协议
- 第四章、连上 Internet
- 4.1 Linux 连上 Internet 前的注意事项
- 4.2 连上 Internet 的设定方法
- 4.3 无线网络--以笔记本电脑为例
- 4.4 常见问题说明
- 4.5 重点回顾
- 4.6 本章习题
- 4.7 参考数据与延伸阅读
- 第五章、 Linux 常用网络指令
- 5.1 网络参数设定使用的指令
- 5.2 网络侦错与观察指令
- 5.3 远程联机指令与实时通讯软件
- 5.4 文字接口网页浏览
- 5.5 封包撷取功能
- 5.6 重点回顾
- 5.7 本章习题
- 5.8 参考数据与延伸阅读
- 第六章、 Linux 网络侦错
- 6.1 无法联机原因分析
- 6.2 处理流程
- 6.3 本章习题
- 6.4 参考数据与延伸阅读
- 第二部分:主机的简易资安防护措施
- 第七章、网络安全与主机基本防护:限制端口, 网络升级与 SELinux
- 7.1 网络封包联机进入主机的流程
- 7.2 网络自动升级软件
- 7.3 限制联机埠口 (port)
- 7.4 SELinux 管理原则
- 7.5 被攻击后的主机修复工作
- 7.6 重点回顾
- 7.7 课后练习
- 7.8 参考数据与延伸阅读
- 第八章、路由观念与路由器设定
- 8.1 路由
- 8.2 路由器架设
- 8.3 动态路由器架设:quagga (zebra + ripd)
- 8.4 特殊状况:路由器两边界面是同一个 IP 网段: ARP Proxy
- 8.5 重点回顾
- 8.6 本章习题
- 8.7 参考数据与延伸阅读
- 第九章、防火墙与 NAT 服务器
- 9.1 认识防火墙
- 9.2 TCP Wrappers
- 9.3 Linux 的封包过滤软件:iptables
- 9.4 单机防火墙的一个实例
- 9.5 NAT 服务器的设定
- 9.6 重点回顾
- 9.7 本章习题
- 9.8 参考数据与延伸阅读
- 第十章、申请合法的主机名
- 10.1 为何需要主机名
- 10.2 注册一个合法的主机名
- 10.3 重点回顾
- 10.4 本章习题
- 10.5 参考数据与延伸阅读
- 第三部分:局域网络内常见的服务器架设
- 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP
- 11.1 远程联机服务器
- 11.2 文字接口联机服务器: SSH 服务器
- 11.3 最原始图形接口: Xdmcp 服务的启用
- 11.4 华丽的图形接口: VNC 服务器
- 11.5 仿真的远程桌面系统: XRDP 服务器
- 11.6 SSH 服务器的进阶应用
- 11.7 重点回顾
- 11.8 本章习题
- 11.9 参考数据与延伸阅读
- 第十二章、网络参数控管者: DHCP 服务器
- 12.1 DHCP 运作的原理
- 12.2 DHCP 服务器端的设定
- 12.3 DHCP 客户端的设定
- 12.4 DHCP 服务器端进阶观察与使用
- 12.5 重点回顾
- 12.6 本章习题
- 12.7 参考数据与延伸阅读
- 第十三章、文件服务器之一:NFS 服务器
- 13.1 NFS 的由来与其功能
- 13.2 NFS Server 端的设定
- 13.3 NFS 客户端的设定
- 13.4 案例演练
- 13.5 重点回顾
- 13.6 本章习题
- 13.7 参考数据与延伸阅读
- 第十四章、账号控管: NIS 服务器
- 14.1 NIS 的由来与功能
- 14.2 NIS Server 端的设定
- 14.3 NIS Client 端的设定
- 14.4 NIS 搭配 NFS 的设定在丛集计算机上的应用
- 14.5 重点回顾
- 14.6 本章习题
- 14.7 参考数据与延伸阅读
- 第十五章、时间服务器: NTP 服务器
- 15.1 关于时区与网络校时的通讯协议
- 15.2 NTP 服务器的安装与设定
- 15.3 客户端的时间更新方式
- 15.4 重点回顾
- 15.5 本章习题
- 15.6 参考数据与延伸阅读
- 第十六章、文件服务器之二: SAMBA 服务器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服务器的基础设定
- 16.3 Samba 客户端软件功能
- 16.4 以 PDC 服务器提供账号管理
- 16.5 服务器简单维护与管理
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考数据与延伸阅读
- 第十七章、区网控制者: Proxy 服务器
- 17.1 什么是代理服务器 (Proxy)
- 17.2 Proxy 服务器的基础设定
- 17.3 客户端的使用与测试
- 17.4 服务器的其他应用设定
- 17.5 重点回顾
- 17.6 本章习题
- 17.7 参考数据与延伸阅读
- 第十八章、网络驱动器装置: iSCSI 服务器
- 18.1 网络文件系统还是网络驱动器
- 18.2 iSCSI target 的设定
- 18.3 iSCSI initiator 的设定
- 18.4 重点回顾
- 18.5 本章习题
- 18.6 参考数据与延伸阅读
- 第四部分:常见因特网服务器架设
- 第十九章、主机名控制者: DNS 服务器
- 19.1 什么是 DNS
- 19.2 Client 端的设定
- 19.3 DNS 服务器的软件、种类与 cache only DNS 服务器设定
- 19.4 DNS 服务器的详细设定
- 19.5 协同工作的 DNS: Slave DNS 及子域授权设定
- 19.6 DNS 服务器的进阶设定
- 19.7 重点回顾
- 19.8 本章习题
- 19.9 参考数据与延伸阅读
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服务器之三: FTP 服务器
- 21.1 FTP 的数据链路原理
- 21.2 vsftpd 服务器基础设定
- 21.3 客户端的图形接口 FTP 联机软件
- 21.4 让 vsftpd 增加 SSL 的加密功能
- 21.5 重点回顾
- 21.6 本章习题
- 21.7 参考数据与延伸阅读
- 第二十二章、邮件服务器: Postfix
- 22.1 邮件服务器的功能与运作原理
- 22.2 MTA 服务器: Postfix 基础设定
- 22.3 MRA 服务器: dovecot 设定
- 22.4 MUA 软件:客户端的收发信软件
- 22.5 邮件服务器的进阶设定
- 22.6 重点回顾
- 22.7 本章习题
- 22.8 参考数据与延伸阅读