使用NIS和NFS管理UNIX网络
我想大多数的UNIX网络管理员或多或少的都有过类似于这样的麻烦:一个用户要在多台不同的UNIX系统上工作,要在不同的UNIX上登录,保存他们的文档等,而管理员就要在每一台UNIX系统上为他建立帐号,设置密码,设置组信息,建立目录,以便他能在所有的机器上正常工作。同时还要建立一台FTP服务器,每次用户必须将它的文件保存在这台FTP服务器上,然后当他登录到另外一台UNIX系统上的时候再从FTP服务器上取回他所需要的文件。这样不但麻烦,而且管理起来非常不便,因为一旦某天某个员工离职了,管理就要到每一台UNIX系统上去删除他的帐号和文件,来保证他不能在那些机器上登录。而且对于一些系统信息的管理也非常不便,比如每台机器上的hosts文件,你必须要在每台机器上建立一份相同hosts文件,以保证所有的机器的机器名和IP地址的对应都是正确的。可一但某天有哪台机器需要更改IP地址,这时管理员又只有为每一台UNIX机器更改它的hosts文件。
从上面的这些问题我们可以看到其实我们所更改的这些东西大部分都是完全相同的,相同的帐号,相同的目录和相同的hosts文件,如果机器少还没有什么,一旦你管理的机器超过200台,那么可能你这一整天的时间都会花在做这些重复的事上面。
也许你要问,那么那些大网络的UNIX管理员们是使用什么方法来解决这些问题的呢?当然他们不可能是为每一台机器更改这些设置,他们使用的就是今天我们要介绍的NIS和NFS服务。
下面我们就向你介绍在FreeBSD中建立NIS和NFS服务的思路及方法。
(注:下面为我们的实验环境)
cat.mydomain.nis OpenBSD3.3 NIS和NFS客户端
dog.mydomain.nis FreeBSD4.8 NIS主服务器和NFS服务器 (保存网络中所有用户的帐号信息,组信息和用户文件)
bee.mydomain.nis FreeBSD4.5 NIS辅服务器
1、使用NIS共享系统信息
NIS是Sun Microsystem开发的用于在UNIX系统间共享用户数据、组数据、主机数据、协议等数据的服务系统,它最早被命名为Yello Page,后来由于商标冲突被Sun重新命名为NIS,但很是有很多地方以YP来称乎它。由于NIS的出现对UNIX网络管理起到很大的推进,所以现在几乎所有的UNIX系统都对它提供了支持。当然FreeBSD系统也不例外,FreeBSD当前提供的主要是NIS v2,同时也提供了对NIS v1的兼容支持。
我们可以看到,如果一个用户要在多台UNIX系统上工作,他们大都使用相同的用户名、属于相同的组、使用相同的密码。那么我们可以将这些信息存放在一台机器上来统一进行管理,其它机器都从这台机器上来获得这些信息,一但要更改某个用户的信息,管理员就只需要在存放这些信息的机器上进行更改,其它机器就自动的收到更改后的信息,而不再需要管理员一一的进行设置了,这就是NIS工作的基本方式。
NIS使用域来管理那些需要共享的信息,这些信息就够成了NIS数据库,所有拥有相同域名的机器就可以共同使用所在域名的数据库。这些数据库被存放在一台机器上,这台机器就是NIS的主服务器,其它机器就都通过它来查询NIS数据库,但有时为了稳定性的考虑,也可以建立一台或多台NIS辅服务器,它们保持与NIS主服务器的数据同步,当主服务器出现故障时承担主服务器的任务。
下面就让我们来看看,如何在FreeBSD中建立NIS主服务器。
首先,因为NIS是基于域来管理的,所以就要为服务器设定域名,你可以通过domainname来查看你现在的域名(注意:这里的域名与DNS的域名没有任何关系,它只起来将一个网络划分为几个部分的作用,因而它可以为任何值,当然你也可以将它设置成你的DNS域名):
dog# domainname
mydomain.nis如果上面显示为空,则表明你还没有设置你的域名,你同样可以通过domainname来设置和更改你的域名:
dog# domainname mydomain.nis域名设置好以后,就开始进入后面的工作。
默认情况下,FreeBSD将每个域的NIS数据库存放在/var/yp/yourdomainname下面,你需要将你要共享的信息如master.passwd复制到/var/yp下面,这里需要提醒的是,因为FreeBSD默认使用MD5来加密用户口令,因而,如果你是在一个有多种UNIX系统的网络中,而且某些UNIX不支持MD5加密的话,你就需要更改你的密码加密方式为这些UNIX都支持的加密方法(如DES),否则用户将无法在那些机器上登录。
更改FreeBSD默认加密方式的方法如下:
dog# vi /etc/login.conf然后编辑用户所在的类(通过如果没有指定的话就是default类),在其后加入:passwd_format=des:\(其中des代表DES加密,md5代表MD5加密,blf代表Blowfish加密),例如:
default:\
:passwd_format=des:\
:datasize=infinity:\
...保存退出后,需要使用使用cap_mkdb来生成BD(Berkeley Database)格式的数据库文件:
dog# cap_mkdb /etc/login.conf这样便会在/etc目录下更新(或生成)login.conf.db文件。
现在我们只是更改了密码的默认加密方式,而真正的密码还没有改变,因而需要使用passwd命令来更改每一个需要共享出来的用户的口令,然后将master.passwd复制到/var/yp目录下,为了安全应该更改一下master.passwd文件的权限:
dog# cp /etc/master.passwd /var/yp/master.passwd
dog# chmod 0600 /var/yp/master.passwd同样考虑到安全的因素,最好删除那些你不需要和不应该共享的用户(比如:root用户和系统默认用户bin,daemon等)
现在我们就可以初始化我们的NIS主服务器了,初始化使用ypinit(8)命令:
dog# cd /var/yp
dog# ypinit -m mydomain.nis这里-m表示生成主服务器,而mydomain.nis是你的域名。
在初始化过程中,你会被提及一些问题:
Do you want this procedure to quit on non-fatal errors? [y/n: n] 直接选择n然后就是设置NIS服务器的名字,包括主服务器和辅服务器,因为这里我们只有一台主服务器,因而直接按Ctrl-D退出,如果你打算再建几台辅服务器的的话就输你的NIS辅服务器的名字。然后会显示你的服务器信息:
The current list of NIS servers looks like this:
dog.mattcell.com
Is this correct? [y/n: y] 如果没有错误的话,就选择y
接下来就开始进入初始化过程,这个过程中会产生一些出错信息,不过不用理它,这是因为你的NIS服务进程(ypserv)还没有启动的原因造成的。完成后会提示:
dog.mattcell.com has been setup as an YP master server without any errors.这表示你的NIS主服务器已经初化完成。
现在要需要启动我们的NIS守护进程:ypserv(8)了,因为ypserv使用了RPC服务,所以需要先运行portmap(8)来使用它的RPC服务,同时如果用户需要在客户机上更改密码的话,我们就需要在NIS服务器上运行rpc.yppasswdd(8)守护进程:
dog# portmap
dog# ypserv
dog# rpc.yppasswdd为了让这些命令在系统启动的时候就自动启动,这需要在/etc/rc.conf中加入以下设置:
portmap_enable="YES"
nisdomainname="mydomain.nis"
nis_server_enable="YES"
nis_yppasswdd_enable="YES"现在我们的NIS主服务器就已经跑起来了,你可以通过以下命令来测试它的工作情况:
dog# ypbind