简易NetworkInformationService,NISServer架设
发表于:2007-07-04来源:作者:点击数:
标签:
有没有想过,如果我有十部 Linux 主机,这十部主机仅负责不同的功能,事实上,所有的主机帐号与对应的密码都相同!那幺我是将帐号与密码分别设定置在十部计算机上面,还是可以透过一部主机做为帐号管理的功能,然后其它的主机只要当用户用登入时,就必须要到
有没有想过,如果我有十部 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 身份登入后,进行下面的工作:
4.激活 portmap 并设定开机时激活:
这个应该不难吧!使用:
[root @test root]# /etc/rc.d/init.d/portmap [root @test root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN 如果看到 sunrpc 的话,就表示激活成功了! [root @test root]# chkconfig --level 35 portmap on 上面这一行在设定 portmap 在 run-level 为 3, 5 的时候就开机时激活!
5.很简单吧!这样 portmap 就激活了!
6.激活 time 与 time-udp :
由于 time 与 time-upd 是在 NIS 运作时所需要的 daemon ,所以也必须要激活他啦!激活的方式也很简单,就是利用 xinet 这个 super daemon 来进行即可!
[root @test root]# vi /etc/xine
td.d/time # 找到底下这一行: disable = yes # 将他改成 disable = no # 储存后离开 [root @test root]# vi /etc/xinetd.d/time-udp # 同样的将 disable = yes 改成 disable = no 即可! [root @test root]# /etc/rc.d/init.d/xinetd restart [root @test root]# netstat -utl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:time *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN udp 0 0 *:time *:* udp 0 0 *:sunrpc *:*
7.注意喔!目前至少也要有上面四个 LISTEN 的 port 才行喔!分别是 UDP 与 TCP 封包的啦!
8.建立 NIS 的领域名称 ( nisdomainname )
在 NIS 的系统当中,他的领域名称 (domain name) 是与 DNS 没有绝对关系的,由于这个领域名称会常被使用到,因此我们需要将他建立起来!建立起来的方法很简单,直接执行一个指令,并修改一个档案即可!
1. 建立 NIS 的领域名称 (我这里是设定为 cluster ): [root @test root]# nisdomainname cluster [root @test root]# vi /etc/rc.d/rc.local # 将底下这一行加入这个档案的最后一行内: /bin/nisdomainname cluster 2. 设定好网络参数: [root @test root]# vi /etc/sysconfig/network # 加入底下这一行: NISDOMAIN=cluster
9.
10.设定 ypserv 的设定档: ypserv.conf
这个设定档的内容其实也是很简单,大概只有几行而已,设定的主要语法为:
<设定项目>:<设定项目的值>
11.我们先谈一谈他里面的几个设定细项:
[root @test root]# vi /etc/ypserv.conf files: 30 # 这说的是『有多少数据库档案(database file)会被先读进高速缓存当中』 # 的意思,一般来说, 30 是已经很足够的数值了,不需要更动他; trusted_master: your.master.servers.name xfr_check_port: yes # 上面这两个都仅与 Master + Slave 架构有关的设定值,一般来说, # 只有一部主要 NIS Server 的系统中是用不到这两个设定值的! # 如果你的 NIS 是 slave 的架构,那幺需要指定一部 master 做为数据库内容的 # 同步时候的主机,那就是 trusted_master 的设定内容啰! # 如果没有 master/slave 架构时,那就不需要 trusted_master 这个设定了! # 至于 xfr_check_port 则是指定 master 与 slave 是否都要以 < 1024 # 以下的 port 来进行沟通的讯息!通常预设就是 yes ,不需要更动他! # <主机名称/IP>:<网域名称>:<数据库类别>:<安全性> # 这个是这个档案里面最重要的部分了!主要在设定安全性的方面, # 可以设定多行,而是否能够通过的规则是『一行一行检查』的方式! # 所以这里的设定应该是:先开放要开放的网域,然后全部都关闭! # 先谈一谈各个相关的项目: # 1. 主机名称/IP:这里可以这样设定:192.168.1.0/255.255.255.0 # 2. 网域名称:通常都设定成为 * 即可! # 3. 数据库类别:可以使用 * 来表示所有的数据库! # 4. 安全性:主要有三种参数: # none :无论如何就是可以无条件进入本机; # port :仅允许 < 1024 以下的 port 进入; # deny :无论如何就是关闭不让人家登入主机! # 由于我是允许 127.0.0.0/255.0.0.0 以及 192.168.10.0/255.255.255.0 进入, # 其它的都关闭!所以我可以这样设定: 127.0.0.0/255.255.255.0 : * : * : none 192.168.10.0/255.255.255.0: * : * : none * : * : * : deny # 但是因为 /etc/shadow 里面的档案总不好让人看到吧!而又由于 Linux # 系统当中,只有 root 可以启用 < 1024 以下的 port ,因此,更安全的设定, 可以这样做: 127.0.0.0/255.255.255.0 : * : * : port 192.168.10.0/255.255.255.0: * : * : port * : * : * : deny # 三行也就够了! # 无论如何,如果您想要让您的 NIS Server 运作的较为快速,并且安全性上面 # 没有太多的考量(内部网域时!),那幺使用 none 是一个不错的主意!
12.
13.建立网络信任群组:
这个 /etc/netgroup 档案可以记录在我们网域里面被信任的群,这个档案的内容当中,每一行都有三个字段,分别以逗号『,』隔开,意义为:
,, 主机,使用者帐号,领域名称
14.事实上,如果这个档案是『空的』的话,那幺代表着『全部的主机、帐号与领域名称都接受』的意思,因为我们已经在 /etc/ypserv.conf 里头设定好了关于安全的项目了,所以这个档案只要建立即可(本来是不存在的!):
[root @test root]# touch /etc/netgroup
15.
16.激活 ypserv 这个 daemon ,并且设定开机时激活:
好了!都设定完成之后,在接下来自然就是要激活了!激活有两个 daemons ,激活的方式为:
1. 激活啰! [root @test root]# /etc/rc.d/init.d/ypserv start [root @test root]# /etc/rc.d/init.d/yppasswdd start 2. 观察一下是否真的有动作? [root @test root]# rpcinfo -u localhost ypserv program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting [root @test root]# rpcinfo -u localhost yppasswdd program 100009 version 1 ready and waiting 这个 rpcinfo 就是在观察与 RPC Server 有关的 program 目前的状况! 因此可以用他来观察你的 ypserv 喔! 3. 设定开机时激活: # 你可以使用 ntsysv ,这里我们使用 chkconfig 啰! [root @test root]# chkconfig --level 35 ypserv on [root @test root]# chkconfig --level 35 yppasswdd on
17.
18.制作数据库、并重新激活 ypserv 与 yppasswd :
好了,既然 NIS Server 主要是要提供数据库给大家参考用的,所以当然要制作数据库啰!然后,我们又将这些数据库读入快取当中,所以数据库制作完毕之后,一定要重新激活 ypserv 与 yppasswdd 才行!
1. 制作数据库: [root @test root]# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. server.cluster 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 . next host to add: server.cluster next host to add: <==在这里按下[ctrl + d]跳出 The current list of NIS servers looks like this: server.cluster Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/cluster/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/cluster' 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/cluster' server.cluster has been set up as a NIS master server. Now you can run ypinit -s server.cluster on all slave server. 这个动作是每次修改使用者资料后一定要做的动作!,就是重新制作数据库, 然后并且需要重新激活 ypserv 与 yppasswdd 喔! 2. 重新激活服务: [root @test root]# /etc/rc.d/init.d/ypserv restart [root @test root]# /etc/rc.d/init.d/yppasswdd restart
19.这个动作的重点是在 /var/yp 这个目录当中,制作了多个的等待 NIS Clients 查寻的数据库!请注意的是,每次在 NIS server 上面更动使用者的资料时,一定需要重新做这个步骤喔!
这样 Server 的部分就设定妥当了!如果您还想要玩一玩 master 与 slave 的架构的话,那就请参考:
NIS HOW-TO:http://www.linux-nis.org/nis-howto/HOWTO/index.html
Client 端设定
设定完了 Sever 之后, NIS Client 也需要设定喔!( 注:在 NIS clients 主机记录的登入者的信息中,仅记录 UID 大于 500 以上的使用者喔!因为小于 500 以下的 UID 都是预设给系统使用的,因此是预设不开放给 NIS 来查寻,自然也就不会被写入 NIS 数据库档案当中了! )
·NIS Client 的结构
还记得上面提过的,NIS Client 需要的套件是:
oypbind
oyp-tools
至少也要这两个套件才可以喔!至于相关的设定档为:
o/etc/yp.conf :设定 NIS Server 的主机名称与领域名称
o/etc/hosts :至少需要设定 NIS server 主机 IP 对应的主机名称喔!
o/etc/passwd :指定需要查寻的是什幺;
o/etc/nsswitch.conf :指定要使用什幺 daemon 查寻帐号与密码。
大致上就是如此啦!我们要设定的信息也就是如同上面的档案啰!好!设定吧!
·NIS Client 的设定流程
请留意的是,底下的设定都是在 Client 端喔!不要在主机端作这些设定了!^_^
1.激活 portmap 并设定开机时激活:
不论是 RPC Server 还是 RPC Client ,反正只要是 RPC 的相关服务要应用,就一定要有 portmap 的辅助才行!所以,激活并设定开机时激活吧!
[root @client root]# /etc/rc.d/init.d/portmap [root @client root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN 如果看到 sunrpc 的话,就表示激活成功了! [root @test root]# chkconfig --level 35 portmap on 上面这一行在设定 portmap 在 run-level 为 3, 5 的时候就开机时激活!
2.很简单吧!这样 portmap 就激活了!
3.设定 NIS Server 的 IP 对应主机名称:
请看上面 Server 设定之前的假设,我的 NIS Server 的 IP 与主机名称记录在 Client 端的 /etc/hosts 上面:
[root @client root]# vi /etc/hosts # 要有底下这一行喔! 192.168.10.30 server.cluster
4.
5.设定 NIS 的 domain 与 NIS 的主机:
NIS Server 与 Client 的 NIS domain 一定要相同,所以我们必须要花一点时间来将这个咚咚搞定:
1. 建立 NIS domain name: [root @client root]# nisdomainname cluster [root @client root]# vi /etc/rc.d/rc.local # 加入底下这一行: /bin/nisdomainname cluster [root @client root]# vi /etc/sysconfig/network # 加入底下这一行: NISDOMAIN=cluster 2. 建立 NIS 查寻的主机名称 [root @client root]# vi /etc/yp.conf # 加入这两行: domain cluster ypserver server.cluster # 还是要记得,那个 cluster 是你的 NIS 的 domain ,至于 server.cluster # 则是 NIS Server 的主机名称,我这里是使用内部私有 IP ,所以名称可以随便 # 我喜欢来选择的喔!
6.
7.修改密码验证的方式:
密码验证的方式是一定要修改的,不然你的系统怎幺知道要去哪里使用什幺方式查寻帐号、密码资料呢?!所以您至少需要更改两个档案喔!
1. 密码文件的修改: [root @client root]# vi /etc/passwd # 还记得这个档案吗?这个档案总共有七个字段,而每个字段都以分号『:』隔开, # 相关的信息请参考基础学习篇里面的帐号管理章节。由于我们要将资料 # 设定以 NIS Server 的数据库来验证,因此, # 在这个档案的最后面加入这一行: +:::::: # 注意喔!在 + 之后连续加六个 : ,并且中间没有空格符! 2. 查寻密码的程序: # 因为我们有很多方式来查寻密码,需要修改 /etc/nsswitch.conf 这个档案才行 [root @client root]# vi /etc/nsswitch.conf # 找到相关的参数,并改成底下这样: passwd: files nis nisplus shadow: files nis nisplus group: files nis nisplus hosts: files nis dns # 这个档案在设定一些信息的查寻程序!那个 files 指的是本机的相关档案, # 至于 nis 则是透过 NIS 来进行查寻,至于 nisplus 则是 NIS+ 这是比较新 # 版的 NIS 啦!不过,官方网站上面说,目前这个发展的计画已经暂停了! # 1. passwd: 就是使用者相关信息查寻,分别为 /etc/passwd, nis 与 nisplus # 2. shadow: 就是使用者密码的查寻, /etc/shadow, nis 及 nisplus # 3. group: 就是使用者的群组信息查寻, /etc/group, nis 及 nisplus # 4. hosts: 就是主机名称与IP对应的查寻,/etc/hosts, nis 及 /etc/resolv.conf
8.
9.激活 ypbind 与设定开机激活:
这样几乎就设定完成了!而我们前面说过, NIS Client 也需要激活 ypbind 这个 daemon 的,所以就给他激活吧!
1. 直接手动激活 ypbind 吧: [root @client root]# /etc/rc.d/init.d/ypbind start [root @client root]# rpcinfo -p localhost program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 735 ypbind 100007 1 udp 735 ypbind 100007 2 tcp 738 ypbind 100007 1 tcp 738 ypbind # 至少要有上面几个信息才是对的喔!不过,需要记得的是,那个 port number # 是系统随机激活的,所以 port number 每次都会不太一样啊! # 记得要经常用 rpcinfo 去检查一下 RPC Server 相关的服务才行! 2. 设定开机时激活: [root @client root]# chkconfig --level 35 ypbind on
10.
·基本上,上面的动作就已经设定好了一部 NIS Client 主机了!而且已经可以跑啰!不过,我们毕竟不知道到底目前我们的 NIS Client 主机使用的 NIS Server 主机里面的哪些资料,并且如何去确认我们的数据库与设定值都没有问题呢?!呵呵!所以底下我们就来谈一谈那个 yp-tools 提供的相关好用的工具程序来检验啰!
·
·NIC Client 端检验 NIS 设定:yptest, ypwhich, ypcat
设定好了 NIS Client 之后,先以 netstat 与 rpcinfo 检验一下是否成功的激活之后,接下来就是要测试到底我们的 NIS Client 与 NIS Server 之间沟通的情况如何了!此时就需要使用到 NIS 提供的 yp-tools 这个套件,里面的几个小小的执行程序来动作了:
oyptest :主要在测试 yp 的设定内容、数据库内容等等所有 NIS 相关的资料测试;
oypwhich:主要在测试 NIS Client 与 Server 之间沟通的数据库 (database) 到底是哪几个档案;
oypcat :主要在取得 NIS Server 上面的使用者密码信息!
分别谈一谈每个程序的用途与说明吧!
yptest
[root @client root]# yptest Test 1: domainname Configured domainname is "cluster" Test 2: ypbind Used NIS server: server.cluster .... .... Test 8: yp_maplist rpc.bynumber rpc.byname hosts.byaddr hosts.byname group.byname passwd.byname ypservers passwd.byuid Test 9: yp_all test test:dkoUW2XHV30sEV5gLM4NapyuhBcpVs.:500:500::/home/test:/bin/bash
看到了吗?会有很多的资料一项一项的去测试,测试的结果都会显示在屏幕上面,最好都没有问题之后再开始 NIS Client 的服务吧! ^_^
ypwhich
[root @client root]# ypwhich server.cluster [root@node1 root]# 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"
单纯使用 ypwhich 的时候显示的是『NIS Client 的 domain』名称,而当加入 -x 这个参数时,则是显示『NIS Client 与 Server 之间沟通的数据库有哪些?』由上面我们可以很清楚的就看到相关的档案啦!这些数据库档案则是放置在我的 NIS Server 的 /var/yp/cluster/* 里面啰!
ypcat
[root @client root]# ypcat -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" # 主要的功能就是『列出数据库』啰!与 ypwhich -x 相同功能! # 所以我们有 ethers, aliases......passwd 等数据库名称与文件名! [root @client root]# ypcat [数据库名称或功能] # 这个指令可以用来取得 NIS Server 上面各个数据库的内容! # 举例来说,我们想要知道 passwd ( 密码资料 ) 的所有使用者内容,就需要: [root @client root]# ypcat passwd (或 ypcat passwd.byname ) test:dkoUW2XHV30sEV5gLM4NapyuhBcpVs.:500:500::/home/test:/bin/bash # 如果是想要知道 hosts 的内容 (NIS Server 主机上面 /etc/hosts 的内容): [root @client root]# ypcat hosts 127.0.0.1 localhost localhost.localdomain 192.168.10.30 server.cluster # 反正就是加上数据库,你就可以取得 NIS server 主机上面的数据库内容啦!
这三个指令在进行 NIS Client 端的检验时,是相当有用的喔!不要忽略了他的存在啊!尤其是刚架设好 NIS Client 时,一定要使用 yptest 去检查看看有没有设定错误喔!根据屏幕显示的讯息去一个一个校正错误才行啊!
·修改使用者密码 ( 需要有 root 身份 ): yppasswd, ypchfn, ypchsh
好了,既然 NIS Client 已经可以正式的来 run 了,那幺还可能有什幺大问题呢!?最大的问题在于....我能不能在 NIS Client 端修改各个帐号的密码呢?答案是『能!』但是不怎幺方便~因为,我们要修改的是 NIS Server 端的数据库喔!也就是说,我们在 NIS Client 端登入之后,要修改自己这个帐号的密码,其实改到的是 NIS Server 的数据库密码啊!而要修改数据库密码时,需要使用 root 的身份,所以一定需要 root 的密码~如此一来,实在是不太方便~如果真的要修改的话,那幺可以使用底下三个小指令来进行修改,不过,不怎幺建议这样做就是了!
oyppasswd :与 passwd 指令相同功能;
oypchfn :与 chfn 相同功能;
oypchsh :与 chsh 相同功能。
无论如何,我是不太建议大家使用这些指令去修改数据库的内容啦!比较建议这样做:
3.登入到 NIS Server 主机里面去,进行 useradd 或者是 passwd 修改帐号与密码等等的更动;
4.使用 /usr/lib/yp/ypinit -m 重新制作数据库档案!
这样就 OK 啦!比较简单啦我想~至于上面三个指令,请使用 Linux 的好朋友 man 来查看一下吧! ^_^
主机进阶设定
·NIS 与 NFS 的结合设定:
不晓得您有没有发现一件事情啊!那就是:我们的 NIS Server 设定的使用者家目录是在 /home 底下,例如 test 这个人的家目录在 /home/test (这个目录在 server.cluster 这部主机上面才有),问题是,当我们登入 NIS Client 主机时,那幺我们取得的家目录资料还是在 /home/test ,问题是,NIS Client 主机并没有 /home/test 这个目录啊:
otest 这个 User 是在 server 上面建立的,所以有 /home/test 这个目录;
o在 NIS Client 上面没有真正的 test 这个帐号,因为他是由 NIS server 上面取得的,所以自然也就没有 /home/test 这个目录在 NIS client 上面。
这样会造成什幺问题呢?呵呵!就是你的 test 这个使用者,登入 NIS client 的时候,『会找不到自己的家目录』!啊!真是糟糕~而且,因为我们的 NIS client 可能有很多部,要是每次登入 NIS Clients 主机的时候,所拥有的家目录都是个别 NIS client 上面的目录,那幺就没有达到 NIS 的功能啦!您说是吧!所以,如果你需要『登入的每个 NIS Client 所拥有的家目录都是相同的!』的一个情况,呵呵!就可以使用 NFS 来加以设定啦!详细的 NFS 设定我们之前已经提过了,这里不在赘言,单纯谈一下简单的设定技巧:
o在 NIS Server 上面开放 /home 这个目录出来;
o在 NIS Client 上面, mount NIS 主机的 /home 到自己的 /home 里面去!
o如此一来,不论登入哪一部 NIS Server 或 client ,使用者都是进入到 NIS Server 的 /home 里面的家目录啰!
设定的方法也不难,我们就简单的谈一谈吧!
1. 设定 NIS Server 主机的 NFS 开放目录: [root @test root]# vi /etc/exports /home 192.168.10.0/24(rw,async,no_root_squash) [root @test root]# exportfs -rv exporting 192.168.10.0/24:/home [root @test root]# /etc/rc.d/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root @test root]# chkconfig --level 35 nfs on 2. 设定 NIS Client 的 mount 资料! # 先以 root 的身份登入到 NIS Client 主机上面: [root @client root]# mount -t nfs 192.168.10.30:/home /home # 如果没有问题了,就将上面这一行加入 /etc/rc.d/rc.local 当中吧!
这样一来,您的 NIS Clients 就具有和 NIS Server 主机一模一样的家目录了!现在您可以立刻登入看看喔!
o不过,很可惜的是,目前安装妥当的系统当中, NIS 并没有办法让 SSH 顺利的登入的!这牵涉到整个 key pair 的问题,比较麻烦,或许可以藉由 NIS+ (nisplus) 来克服这个问题,网络上目前有相当多的讨论在讨论这个情况,由于 NIS plus 与 NIS 功能差不多,实在不想再 NIS 上面又架设一部 NIS+,因此目前倾向于不要管 ssh 这种登入的方法,反正做了 NIS 在内部网络当中,最主要的功能其实是在于 R shell 这个比较危险等级的 shell 说!
·防火墙的规划
又来到了防火墙的规划了!要注意的是,我们的 NIS 与 NFS 都是使用 RPC Server 的,所以啰,都可以直接管制 111 这个 port 即可!能够直接以 iptables 管理 111 这个 port ,例如仅允许 192.168.10.0/24 这个网域进来的话,可以在你的防火墙规则上面加上:
/sbin/iptables -A -s 192.168.10.0/24 --dport 111 -j ACCEPT /sbin/iptables -A --dport 111 -j DROP
·
此外,你也可以使用 TCP_Wrappers 来掌管喔:
[root @test root]# vi /etc/hosts.allow portmap: 192.168.10.0/255.255.255.0 [root @test root]# vi /etc/hosts.deny portmap: ALL
·
至于其它的管理,嘿嘿!就得靠您自己发挥创意啰! ^_^
重点回顾
·Network Information Service ( NIS ) 也可以称为 Sun Yellow Pages (yp) 主要是负责在网域当中帮忙 NIS Client 端查寻帐号与密码以及其它相关网络参数的服务,只是在 Linux 上面称为 NIS 而在 Sun Unix 上面称为 Yellow Pages 而已~
·网域当中有很多 linux 主机时,可以让一台 Linux 主机做为 NIS Server 主机,负责整个网域当中帐号与密码的数据库档案制作;至于其它的 Linux 主机则设定为 NIS client 端,当有用户要进行登入的行为时, NIS client 会前往 NIS server 搜寻数据库里面记录的内容,以做为用户登入的验证信息。
·不论是 NIS 或者是 NFS 都是藉由 RPC Server 所启用的,因此,都可以使用 rpcinfo 来查寻 NIS 是否已经激活,以及该 daemon 是否已经向 portmapper ( RPC server ) 注册了!
·NIS 使用的套件就是 yp 这个套件,主要分为两部份, ypserv 用在 NIS Server,至于 ypbind 与 yp-tools 则用在 NIS Client 上面。
·NIS server 其实就是提供本身的 /etc/passwd, /etc/shadow, /etc/group, /etc/hosts 等帐号密码资料,以及相关的网络参数等,以提供网域当中 NIS Client 的搜寻之用;
·在 NIS Server 的设定当中,最重要的一个步骤就是将帐号、密码、网络参数等 ASCII 格式档案转成数据库档案( database file ),以提供 NIS client 的查寻!而激活 ASCII 转成 database 的程序可以使用 /usr/lib/yp/ypinit -m 或者到 /var/yp 底下执行 make 均可。
·NIS client 端的设定当中,最重要的为 /etc/passwd 里面的设定,需要让 NIS Server 的资料加在 /etc/passwd 后面;
·NIS client 端的设定当中,另一个重要的设定档为 /etc/nsswitch.conf ,里头设定了相当多的资料查寻程序。
参考资源
·Study Area 之 NIS 服务器架设:http://www.study-area.org/linux/servers/linux_nfs.htm
·NIS 官方网站:http://www.linux-nis.org/
·NIS HOW-TO:http://www.linux-nis.org/nis-howto/HOWTO/index.html
本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
·请简单说明 NIS server 的功能与工作流程
·请简单说明 NIS Server/client 的架构
·NIS 激活之前需要先激活那个服务,否则就无法激活成功 ( 提示:RPC Server )
·我的 NIS 网域名称为 bird ,另外,我主机的 IP 与主机名称为 192.168.5.1/bird.nis.org ,请问要这些信息需要设定在 NIS Server 的哪些档案之内?
·/etc/nsswitch.conf 的功能为何?如果我想要让密码查寻先本地的密码文件,再查寻 NIS ,需要如何设定?
·NIS Server 将密码等档案做成数据库以提供 NIS client 来查寻,那幺请问使用什幺动作后,可以将密码档案转成 NIS 的数据库格式档案?
·如果我想要增加网域当中一个新的帐号:newaclearcase/" target="_blank" >ccount,并且这个 newaccount 可以让 NIS Client 查寻到他的帐号与密码,需要进行哪些步骤?
·实作范例题:底下是我的网域参数特征:
network/netmask:192.168.1.0/255.255.255.0
NIS server : 192.168.1.100 (hostname: server.nis.test )
NIS cient: 192.168.1.200 (hostname: client1.nis.test )
NIS domain name: nis.test
利用上面的参数来设定 NIS 架构,请一步一步的写下你的设定。
·承上题:如果我的网域太大了,所以有一部 NIS slave 主机,这部主机的 IP 为 192.168.1.50 ,请问这部主机该如何设定?
原文转自:http://www.ltesting.net