有没有想过,如果我有十部 Linux 主机,这十部主机仅负责不同的功能,事实上,所有的主机帐号与对应的密码都相同!那幺我是将帐号与密码分别设定置在十部计算机上面,还是可以透过一部主机做为帐号管理的功能,然后其它的主机只要当用户用登入时,就必须要到管理帐号的主机上面确认其帐号与密码呢?哪一个比较方便而且灵活?当然是找一个帐号管理的主机比较方便的多啦!如果有使用者要修改密码,不必要去到十部主机修改密码啦!只要到主要管理主机去修改,其它的主机根本就不需要更动!哈哈!轻松又愉快呢!这个功能的达成有很多的方式,在这里,我们介绍一个很简单的方式,那就是 Network Information Service 这个 NIS 服务器的架设啦!
原理:
在一个大型的网域当中,如果有多部 Linux 主机时,万一要每部主机都设定相同的帐号与密码的设定,还真是?唆。所以,适时的使用一部主要主机 ( master server ) 管理网域中的所有帐号,其它的主机则使用这部主要主机提供的帐号与密码来达成让使用者『登入』的作用即可!这样的功能有很多的服务器软件可以达成,这里我们要介绍的则是 Network Information Services, NIS server 这个服务器软件喔!
?什幺是 NIS 与 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 就是提供那些资料啦!有底下这些基本的资料提供给 Client 端喔:
o登入帐号/密码/家目录:就是 /etc/passwd 这个档案
o群组信息:就是 /etc/group 这个档案
o相关主机名称与IP:就是 /etc/hosts 这个档案。
?NIS 的运作流程
事实上, NIS 的运作流程一点也不困难。如果在一个不是很大的网域当中,那幺大约会有一部 NIS Server ,并且同时有很多部的 NIS Client 才对!这里我们不谈 NIS Server 的 Primary 与 Slave 架构,仅谈 NIS Server 与 NIS Client 的架构,整体架构有点像底下的图标:
[[The No.1 Picture.]]
?就如同上面图标的模样。我们已经晓得 NIS 提供的其实就是 /etc/passwd, /etc/group 以及 /etc/hosts 等 ASCII 格式档案的信息,而 NIS Server 会将前述几个 ASCII 档案内容复制成为 DBM 数据库格式的档案,当用户藉由个人计算机联机到 NIS Client 主机尝试登入时, NIS Client 将会到 NIS Server 去查寻该用户的帐号与密码,以做为用户登入验证的依据。
oNIS Server 将自己系统内的 /etc/passwd, /etc/group, /etc/hosts 等制作成为 DBM 的数据库格式档案;
oNIS Client 若有用户登入的要求时,会前往 NIS Server 搜寻数据库里面的资料做为验证之用。
o每次更动 NIS Server 上面的用户资料时,则 NIS Server 需要重新制作 DBM 数据库档案才行!
这样可以了解吗?!很简单的啦!不过,需要特别留意的是,我们需要设定的有:
oNIS Server 端;
oNIS Client 端。
设定方面需要两者的设定喔!
?NIS 与 RPC 的关系
还记得另一个 Sun 公司开发的服务器软件 NFS 吗?他是由 RPC (Remote Procedure Call) 所统一管理的。呵呵!我们这个 NIS 也是使用 RPC 来管理的喔!所以?!您最好回到前面 NFS 的章节去瞧一瞧 RPC 的一些相关说明比较好喔!那个 RPC 就是我们常常见到的 Portmapper 啦!也就是 sunrpc ( port 111 ) ?!在 NIS 里面,我们不但需要激活 portmap ,还需要激活另一个玩意儿,那就是由 super daemon 管理的 time 与 time-udp 这两个宝贝蛋了!嗯!底下我们将会来探讨一下各个套件?!
?NIS Server 的 master 与 slave 架构
刚刚我们仅提到只有一部 NIS Server 在整个网域之中,这是一般比较小型的网域常见的方法。万一,如果我们的网域里面有几乎 100 部以上的主机呢?而且每一部的流量还真的很大的时候,这个时候,只有一部 NIS Server 可能无法提供快速的资料查寻与响应的状态!这个时候就需要 NIS Sever 的 master 与 slave 的架构了。
还记得在 DNS 主机架设当中,我们曾经提过关于 master 与 slave 的关系吧?!就是 slave 主要是藉由将来自 master 主机的资料加以更新到自己的数据库当中,并且提供与 master 相同的查寻功能!这个 NIS 的 master 与 slave 架构则完全相同!
oNIS Server 的 master 先将自己的帐号、密码相关档案制作成为数据库档案(database file);
oNIS Server 的 master 将自己的数据库档案传送到 slave 上面;
oNIS Server 的 slave 接收来自『信任的 NIS Server master 主机』的资料后,更新自己的数据库,使自己的数据库与 master 主机的资料同步;
o网域当中的所有 NIS Client 查寻 NIS Server 时,会找寻『最先响应的那一部 NIS 主机的数据库内容』。
所以,我们可以知道的是,NIS 的 master 与 slave 架构主要在分散查寻 NIS 时候的主机负荷,因此,除非您的网域真的很大,否则是没有必要架设 NIS Slave 与 master 的架构的啦!底下我们没有架设 master 与 slave 喔!只有一部主要的 master 而已啦!
套件安装
基本上, NIS 建议直接使用原版光盘上面给我们的 RPM 来安装即可!但是需要安装哪些套件呢?您至少需要底下几个套件才行:
oyp-tools :提供 NIS 相关的查寻指令功能
oypbind :提供 NIS Client 端的设定套件
oypserv :提供 NIS Server 端的设定套件
oportmap :就是 RPM 一定需要的资料啊!
我是在 Red Hat 系统上面使用的设定,所以档名是这样的一个模样,你可以使用『 rpm -qa | grep yp 』来检查一下是否真的有安装这些个套件才行!不过,为什幺 NIS Server 的套件名称会是 yp 呢?还记得我们在上面提到的信息吗? NIS 最早的名称是 Sun Yellow Pages ,所以?,套件名称才会是 yp 啊! ^_^!这样好记多了吧!闲话不多说,马上来进行设定吧!
Server 端设定:
终于来到了设定的地方了, NIS 的设定与 NFS 的设定有点小小的相同之处,就是他的设定『粉简单!』的啦!架设他吧!
?NIS Server 的结构
NIS Server 主要以 ypserv 这个套件提供的资料来进行设定的,他主要的内容有:
o/etc/ypserv.conf :就是主要的设定档了
o/usr/sbin/ypserv :主要的服务(daemon)执行档
o/usr/sbin/rpc.yppasswdd:RPC 的服务?!
o/usr/sbin/rpc.ypxfrd :同样的, RPC 的服务?!
o/usr/lib/yp/ypinit :建立 NIS 数据库的执行程序
所以,事实上我们最重要的就是设定 ypserv.conf 这个档案而已啦!至于 RPC 的设定,就直接激活他即可!另外,还有 yp-tools 会提供的相关资料喔:
o/usr/bin/yppasswd :更改你在 NIS database (NIS Server 所制作的数据库) 的密码
o/usr/bin/ypchsh :同上,但是是更改 shell
o/usr/bin/ypchfn :同上,但是是更改一些使用者的讯息!
?NIS Server 设定流程
开始设定吧!在我的系统当中,假定我的网络状况如下:
o网域为 192.168.10.0/24
oNIS Server 的 IP 为 192.168.10.30,对应的主机名称为 server.cluster
oNIS 的领域名称设定为 cluster
在 NIS Server 端以 root 身份登入后,进行下面的工