## 14.1 NIS 的由来与功能
在一个大型的网域当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的账号与密码时,你该怎么办?复制 /etc/passwd ?应该没有这么呆吧?如果能够有一部账号主控服务器来管理网域中所有主机的账号, 当其他的主机有用户登入的需求时,才到这部主控服务器上面要求相关的账号、密码等用户信息, 如此一来,如果想要增加、修改、删除用户数据,只要到这部主控服务器上面处理即可, 这样就能够降低重复设定使用者账号的步骤了。
这样的功能有很多的服务器软件可以达成,这里我们要介绍的则是 Network Information Services (NIS server) 这个服务器软件喔!底下就先来谈一谈这个 NIS 的相关功能吧!
**Tips:** NIS 主要提供的是用户的账号、密码、家目录文件名、UID等信息,但 NIS 并没有提供文件系统。同时, NIS 同样使用前一章谈到的 RPC 服务器,因此在本章开始前,你还是得要认识一下[第十三章谈到的 NFS 与 RPC](http://linux.vbird.org/linux_server/0330nfs.php), 同时你还得要知道基础学习篇第三版里面的[第十四章账号管理](http://linux.vbird.org/linux_basic/0410accountmanager.php), 同时也得了解一下基础学习篇[第二十二章 make/Makefile](http://linux.vbird.org/linux_basic/0520source_code_and_tarball.php) 的信息才好。
![](https://box.kancloud.cn/2016-05-13_5735736501917.gif)
* * *
### 14.1.1 NIS 的主要功能:管理帐户信息
通常我们都会建议,一部 Linux 主机的功能越单纯越好,也就是说,一部 Linux 就专门进行一项服务。这样有许多的好处,这包含功能单纯所以系统资源得以完整运用, 并且在发生入侵或者是系统产生状况的时候,也比较容易追查问题所在。因此,一个公司内部常常会有好几部 Linux 主机,有的专门负责 WWW 、有的专门负责 Mail 、有的专门负责 SAMBA 等等的服务。
不过,这样虽然有分散风险、容易追踪问题的好处,但是,由于是同一个公司内的多部主机,所以事实上所有的 Linux 主机的账号与密码都是一样的!哇!那如果公司里面有 100 的人的话, 我们就需要针对这么多部的主机去设定账号密码了!而且,如果未来还有新进员工的话, 那么光是设定密码就会使系统管理员抓狂了!
这个时候,让我们换一个角度来思考:如果我设计了一部专门管理账号与密码的服务器,而其他的 Linux 主机当有客户端要登入的时候,就必须要到这部管理密码的服务器来查寻用户的账号与密码, 如此一来,我要管理所有的 Linux 主机的账号与密码,只要到那部主服务器上面去进行设定即可! 包括新进人员的设定,反正其他的 Linux 主机都是向它查寻的嘛!没错!真是好~这个就是 Network Information Service, NIS 服务器的主要功能啦!
事实上,Network Information Service 最早应该是称为 Sun Yellow Pages (简称 yp),也就是 Sun 这家公司出的一个名为 Yellow Pages 的服务器软件,请注意, NIS 与 YP 是一模一样的咚咚喔!这个 Yellow Pages 名字取的真是好!怎么说呢?知道黄页 (Yellow Pages) 是什么吗?就是我们家里的电话簿啦! 今天如果你要查寻一家厂商的电话号码,通常就是直接去查黄页上面的纪录来取得电话号码啊!而这个 NIS 也一样,当使用者要登入时, Linux 系统就会到 NIS 服务器上面去找寻这个使用的账号与密码信息来加以比对, 以提供使用者登入之用的检验啊!很棒吧! ^_^
那么 NIS 服务器提供了哪些信息呢?还记得账号与密码放置在哪里吧?NIS 就是提供那些数据啦! 主要有底下这些基本的数据提供给有登入需求的主机喔:
| 服务器端文件名 | 档案内容 |
| --- | --- |
| /etc/passwd | 提供用户账号、UID、GID、家目录所在、Shell 等等 |
| /etc/group | 提供群组数据以及 GID 的对应,还有该群组的加入人员 |
| /etc/hosts | 主机名与 IP 的对应,常用于 private IP 的主机名对应 |
| /etc/services | 每一种服务 (daemons) 所对应的埠口 (port number) |
| /etc/protocols | 基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等 |
| /etc/rpc | 每种 RPC 服务器所对应的程序号码 |
| /var/yp/ypservers | NIS 服务器所提供的数据库 |
至少可以提供上述这些功能,当然啦,你也可以自行定义哪些数据库需要,哪些数据库不需要!
* * *
### 14.1.2 NIS 的运作流程:透过 RPC 服务
由于 NIS 服务器主要是提供用户登入的信息给客户端主机来查询之用,所以, NIS 服务器所提供的数据当然就需要用到传输与读写比较快速的 "数据库" 文件系统, 而不是传统的纯文本数据。为了要达到这个目的,所以 NIS 服务器就必须要将前一小节提到的那些档案制作成为数据库档案, 然后使用网络协议让客户端主机来查询啰。至于所使用的通讯协议与前一章的 [NFS](http://linux.vbird.org/linux_server/0330nfs.php) 相同,都使用远程过程调用 (RPC) 这个玩意儿喔!
此外,如果在一个很大型的网域里面,万一所有的 Linux 主机都向同一部 NIS 服务器要求用户数据时, 这部 NIS 服务器的负载 (loading) 可能会过大。甚至如果考虑到数据使用的风险, 要是这单一的一部 NIS 服务器挂点时,那其他的 Linux 主机还要不要让 users 登入啊? 所以啰,在较为大型的企业环境当中, NIS 服务器可以使用 master/slave (主控/辅助服务器) 架构的。
Master NIS 服务器提供系统管理者制作的数据库, slave 则取得来自 master 的数据,并藉以提供其他客户端的查询。 客户端可以向整个网域要求用户资料的响应,master 与 slave 皆可回答, 由于 slave 的数据来自于 master ,所以用户账号数据本身是同步的! 如此一方面可以分散 NIS 服务器的负载,而且也可以避免因 NIS 服务器挂点而导致的无法登入的风险。
![](https://box.kancloud.cn/2016-05-13_5735da7254ca0.png)
图 14.1-1、NIS 服务器与客户端的运作与查询方式示意图
整个 NIS 的运作就如同上图,首先必须要有 NIS server 的存在,之后才会有 NIS Client 的存在。 那么当使用者有登入的需求时,整个 NIS 的运作程序是:
* 关于 NIS Server (master/slave) 的运作程序:
1. NIS Master 先将本身的账号密码相关档案制作成为数据库档案;
2. NIS Master 可以主动的告知 NIS slave server 来更新;
3. NIS slave 亦可主动的前往 NIS master server 取得更新后的数据库档案;
4. 若有账号密码的异动时,需要重新制作 database 与重新同步化 master/slave。
* 关于当 NIS Client 有任何登入查询的需求时:
1. NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案;
2. 若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询;
3. 每部 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』。
从上面的流程当中,你会发现 NIS client 还是会先针对本机的账号数据进行查询,若本机查不到时才到 NIS server 上头寻找。因此,如果你的 NIS client 本身就有很多一般使用者的账号时,那跟 NIS server 所提供的账号就可能产生一定程度的差异啰!所以,一般来说,在这样的环境下,NIS client 或 NIS slave server 会主动拿掉自己本机的一般使用者账号,仅会保留系统所需要的 root 及系统账号而已。 如此一来,一般使用者才都会经由 NIS master server 所控管啊! ^_^
根据上面[图 14.1-1](#fig14.1-1) 的说明,我们的 NIS 环境大致上需要设定的基本组件就有:
* NIS Master server :将档案建置成数据库,并提供 slave server 来更新;
* NIS Slave server :以 Master server 的数据库作为本身的数据库来源;
* NIS client :向 master/server 要求登入者的验证数据。
就如同上面提到的,在大型环境中才会使用到这么复杂的 NIS master/slave 架构。因此,本章仅会介绍 NIS Master 的建置, 以及 NIS client 的设定而已。其实,NIS 服务使用的环境大概越来越仅局限在学术数值模式仿真的丛集计算机架构中 (PC cluster), 在那样的架构中,老实说,鸟哥认为仅要学会 NIS master 即可。如果还有其他账号方面的要求,例如跨平台的帐户信息提供, 那可能就得要参考 Samba 或更进阶的 LDAP 才好呦!这里我们不谈啦~现在,就让我们开始来玩一玩这个 NIS 的设定吧!
* * *
- 鸟哥的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 参考数据与延伸阅读