NIS Server 将自己系统内的 /etc/passwd, /etc/group, /etc/hosts 等制作成为 DBM 的数据库格式档案;
NIS Client 若有用户登入的要求时,会前往 NIS Server 搜寻数据库里面的数据做为验证之用。
每次更动 NIS Server 上面的用户数据时,则 NIS Server 需要重新制作 DBM 数据库档案才行!
NIS Server 端;
NIS Client 端。
NIS Server 的 master 先将自己的账号、密码相关档案制作成为数据库档案(database file);
NIS Server 的 master 将自己的数据库档案传送到 slave 上面;
NIS Server 的 slave 接收来自『信任的 NIS Server master 主机』的数据后,更新自己的数据库,使自己的数据库与 master 主机的数据同步;
网域当中的所有 NIS Client 查寻 NIS Server 时,会找寻『最先回应的那一部 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 主机上面去找寻这个使用的账号与密码信息来加以比对,以提供使用者登入之用的检验啊!很棒吧! ^_^
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.
[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"
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 与 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 ) 注册了!