|
最近更新日期:2003/09/16
有没有想过,如果我有十部 Linux
主机,这十部主机仅负责不同的功能,事实上,所有的主机账号与对应的密码都相同!那么我是将账号与密码分别设定置在十部计算机上面,还是可以透过一部主机做
为账号管理的功能,然后其他的主机只要当用户用登入时,就必须要到管理账号的主机上面确认其账号与密码呢?哪一个比较方便而且灵活?当然是找一个账号管理
的主机比较方便的多啦!如果有用户要修改密码,不必要去到十部主机修改密码啦!只要到主要管理主机去修改,其他的主机根本就不需要更动!哈哈!轻松又愉
快呢!这个功能的达成有很多的方式,在这里,我们介绍一个很简单的方式,那就是
Network Information Service 这个 NIS 服务器的架设啦!
|
原理:
:什么是 NIS
与 NIS 的主要功能
:NIS 的运作流程
:NIS 与 RPC 的关系
:NIS
Server 的 master 与 slave 架构
套件安装:
Server 端设定:
:NIS Server 的结构
:NIS Server
设定流程
Client 端设定:
:NIS Client 的结构
:NIS Client
的设定流程
:NIS Client 端检验
NIS 设定:yptest, ypwhich,
ypcat
:修改用户密码
( 需要有 root 身份 ): yppasswd, ypchfn, ypchsh
主机进阶设定:
:NIS 与 NFS
的结合设定
:防火墙的规划
重点回顾
参考资源
本章习题练习
原理:
在一个大型的网域当中,如果有多部 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 端喔:
-
登入账号/密码/家目录:就是 /etc/passwd 这个档案
-
群组信息:就是 /etc/group 这个档案
-
相关主机名与IP:就是 /etc/hosts 这个档案。
NIS
的运作流程
事实上, NIS 的运作流程一点也不困难。如果在一个不是很大的网域当中,那么大约会有一部
NIS Server ,并且同时有很多部的 NIS Client 才对!这里我们不谈 NIS Server
的 Primary 与 Slave 架构,仅谈 NIS Server 与 NIS Client 的架构,整体架构有点像底下的图示:
就如同上面图示的模样。我们已经晓得 NIS 提供的其实就是 /etc/passwd,
/etc/group 以及 /etc/hosts 等 ASCII 格式档案的信息,而 NIS Server 会将前述几个
ASCII 档案内容复制成为 DBM 数据库格式的档案,当用户藉由个人计算机联机到 NIS
Client 主机尝试登入时, NIS Client 将会到 NIS Server 去查寻该用户的账号与密码,以做为用户登入验证的依据。
-
NIS Server 将自己系统内的 /etc/passwd, /etc/group,
/etc/hosts 等制作成为 DBM 的数据库格式档案;
-
NIS Client 若有用户登入的要求时,会前往 NIS Server
搜寻数据库里面的数据做为验证之用。
-
每次更动 NIS Server 上面的用户数据时,则 NIS Server
需要重新制作 DBM 数据库档案才行!
这样可以了解吗?!很简单的啦!不过,需要特别留意的是,我们需要设定的有:
-
NIS Server 端;
-
NIS 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 架构则完全相同!
-
NIS Server 的 master 先将自己的账号、密码相关档案制作成为数据库档案(database
file);
-
NIS Server 的 master 将自己的数据库档案传送到 slave
上面;
-
NIS Server 的 slave 接收来自『信任的 NIS Server master
主机』的数据后,更新自己的数据库,使自己的数据库与 master 主机的数据同步;
-
网域当中的所有 NIS Client 查寻 NIS Server 时,会找寻『最先回应的那一部
NIS 主机的数据库内容』。
所以,我们可以知道的是,NIS 的 master 与 slave 架构主要在分散查寻 NIS
时候的主机负荷,因此,除非您的网域真的很大,否则是没有必要架设 NIS Slave
与 master 的架构的啦!底下我们没有架设 master 与 slave 喔!只有一部主要的
master 而已啦!
套件安装
基本上, NIS 建议直接使用原版光盘上面给我们的 RPM 来安装即可!但是需要安装哪些套件呢?您至少需要底下几个套件才行:
-
yp-tools :提供 NIS 相关的查寻指令功能
-
ypbind :提供 NIS
Client 端的设定套件
-
ypserv :提供 NIS
Server 端的设定套件
-
portmap :就是 RPC 一定需要的数据啊!
我是在 Red Hat 系统上面使用的设定,所以档名是这样的一个模样,你可以使用『
rpm
-qa | grep yp 』来检查一下是否真的有安装这些个套件才行!不过,为什么
NIS Server 的套件名称会是 yp 呢?还记得我们在上面提到的信息吗? NIS 最早的名称是
Sun Yellow Pages ,所以啰,套件名称才会是 yp 啊! ^_^!这样好记多了吧!闲话不多说,马上来进行设定吧!
Server
端设定:
终于来到了设定的地方了, NIS 的设定与 NFS 的设定有点小小的相同之处,就是他的设定『粉简单!』的啦!架设他吧!
NIS
Server 的结构
NIS Server 主要以 ypserv 这个套件提供的数据来进行设定的,他主要的内容有:
-
/etc/ypserv.conf
:就是主要的配置文件了
-
/usr/sbin/ypserv
:主要的服务(daemon)执行档
-
/usr/sbin/rpc.yppasswdd:RPC
的服务啰!
-
/usr/sbin/rpc.ypxfrd
:同样的, RPC 的服务啰!
-
/usr/lib/yp/ypinit
:建立 NIS 数据库的执行程序
所以,事实上我们最重要的就是设定 ypserv.conf 这个档案而已啦!至于 RPC
的设定,就直接启动他即可!另外,还有 yp-tools 会提供的相关数据喔:
-
/usr/bin/yppasswd :更改你在
NIS database (NIS Server 所制作的数据库) 的密码
-
/usr/bin/ypchsh :同上,但是是更改
shell
-
/usr/bin/ypchfn :同上,但是是更改一些用户的讯息!
NIS
Server 设定流程
开始设定吧!在我的系统当中,假定我的网络状况如下:
-
网域为 192.168.10.0/24
-
NIS Server 的 IP 为 192.168.10.30,对应的主机名为
server.cluster
-
NIS 的领域名设定为 cluster
在 NIS Server 端以 root 身份登入后,进行下面的工作:
-
启动 portmap 并设定开机时启动:
这个应该不难吧!使用:
[root@test
root]# /etc/rc.d/init.d/portmap start
[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 的时候就开机时启动! |
很简单吧!这样 portmap 就启动了!
-
启动 time 与 time-udp :
由于 time 与 time-upd 是在 NIS 运作时所需要的 daemon ,所以也必须要启动他啦!启动的方式也很简单,就是利用
xinet 这个 super daemon 来进行即可!
[root@test
root]# vi /etc/xinetd.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
*:* |
注意喔!目前至少也要有上面四个 LISTEN 的 port 才行喔!分别是 UDP 与 TCP
封包的啦!
-
建立 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 |
-
设定 ypserv 的配置文件: ypserv.conf
这个配置文件的内容其实也是很简单,大概只有几行而已,设定的主要语法为:
我们先谈一谈他里面的几个设定细项:
[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 是一个不错的主意! |
-
建立网络信任群组:
这个 /etc/netgroup 档案可以记录在我们网域里面被信任的群,这个档案的内容当中,每一行都有三个字段,分别以逗号『,』隔开,意义为:
<host>,<user>,<domain>
主机,用户账号,领域名 |
事实上,如果这个档案是『空的』的话,那么代表着『全部的主机、账号与领域名都接受』的意思,因为我们已经在
/etc/ypserv.conf 里头设定好了关于安全的项目了,所以这个档案只要建立即可(本来是不存在的!):
[root@test
root]# touch /etc/netgroup |
-
启动 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 |
-
制作数据库、并重新启动 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 <control D>.
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 |
这个动作的重点是在 /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 需要的套件是:
至少也要这两个套件才可以喔!至于相关的配置文件为:
-
/etc/yp.conf :设定 NIS Server 的主机名与领域名
-
/etc/hosts :至少需要设定 NIS server 主机 IP 对应的主机名喔!
-
/etc/passwd :指定需要查寻的是什么;
-
/etc/nsswitch.conf :指定要使用什么 daemon 查寻账号与密码。
大致上就是如此啦!我们要设定的信息也就是如同上面的档案啰!好!设定吧!
NIS
Client 的设定流程
请留意的是,底下的设定都是在 Client 端喔!不要在主机端作这些设定了!^_^
-
启动 portmap 并设定开机时启动:
不论是 RPC Server 还是 RPC Client ,反正只要是 RPC 的相关服务要应用,就一定要有
portmap 的辅助才行!所以,启动并设定开机时启动吧!
[root@client
root]# /etc/rc.d/init.d/portmap start
[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 的时候就开机时启动! |
很简单吧!这样 portmap 就启动了!
-
设定 NIS Server 的 IP 对应主机名:
请看上面 Server 设定之前的假设,我的 NIS Server 的 IP 与主机名记录在
Client 端的 /etc/hosts 上面:
[root@client
root]# vi /etc/hosts
# 要有底下这一行喔!
192.168.10.30
server.cluster |
-
设定 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 ,所以名称可以随便
# 我喜欢来选择的喔! |
-
修改密码验证的方式:
密码验证的方式是一定要修改的,不然你的系统怎么知道要去哪里使用什么方式查寻账号、密码数据呢?!所以您至少需要更改两个档案喔!
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 |
-
启动 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 |
基本上,上面的动作就已经设定好了一部 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 这个套件,里面的几个小小的执行程序来动作了:
-
yptest :主要在测试 yp 的设定内容、数据库内容等等所有
NIS 相关的资料测试;
-
ypwhich:主要在测试 NIS Client
与 Server 之间沟通的数据库 (database) 到底是哪几个档案;
-
ypcat :主要在取得 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@clent
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 的密码~如此一来,实在是不太方便~如果真的要修改的话,那么可以使用底下三个小指令来进行修改,不过,不怎么建议这样做就是了!
-
yppasswd :与 passwd 指令相同功能;
-
ypchfn :与 chfn
相同功能;
-
ypchsh :与 chsh
相同功能。
无论如何,我是不太建议大家使用这些指令去修改数据库的内容啦!比较建议这样做:
-
登入到 NIS Server 主机里面去,进行 useradd 或者是
passwd 修改账号与密码等等的更动;
-
使用 /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 这个目录啊:
-
test 这个 User 是在 server 上面建立的,所以有 /home/test
这个目录;
-
在 NIS Client 上面没有真正的 test 这个账号,因为他是由
NIS server 上面取得的,所以自然也就没有 /home/test 这个目录在 NIS client
上面。
这样会造成什么问题呢?呵呵!就是你的 test 这个使用者,登入 NIS client
的时候,『会找不到自己的家目录』!啊!真是糟糕~而且,因为我们的
NIS client 可能有很多部,要是每次登入 NIS Clients 主机的时候,所拥有的家目录都是个别
NIS client 上面的目录,那么就没有达到 NIS 的功能啦!您说是吧!所以,如果你需要『登入的每个
NIS Client 所拥有的家目录都是相同的!』的一个情况,呵呵!就可以使用
NFS 来加以设定啦!详细的 NFS 设定我们之前已经提过了,这里不在赘言,单纯谈一下简单的设定技巧:
-
在 NIS Server 上面开放 /home 这个目录出来;
-
在 NIS Client 上面, mount NIS 主机的 /home 到自己的
/home 里面去!
-
如此一来,不论登入哪一部 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 主机一模一样的家目录了!现在您可以立刻登入看看喔!
-
不过,很可惜的是,目前安装妥当的系统当中, 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
,里头设定了相当多的数据查寻程序。
参考资源
本章习题练习
-
请简单说明 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 的数据库格式档案?
-
如果我想要增加网域当中一个新的账号:newaccount,并且这个
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 ,请问这部主机该如何设定?
前往参考用解答
简易
Network Information Service, NIS Server 架设
2003/05/06:第一次完成日期!
2003/09/16:稍微加入一些信息与微幅修改版面!
|
|