搭建linux NIS服务器(转自蔡元纪老师的文章)

一、NIS简介
       NIS(Network Information Service)是一个为网络中所有的机器提供网络信息的系统,包括用户名、密码、主目录、组信息等。如果某个用户的用户名以及密码保存在了NIS密码数据库中,NIS允许此用户在网络当中的任何一台运行有NIS客户程序的机器上登陆。这使得整个网络看起来象一个独立系统,在所有的主机上有着相同的帐号。

NIS是由SUN公司开发的,所以最初被叫做Sun Yellow Page。另一方面,Yellow Pages是英国电信的商标,英国电信一直要求Sun更换这个名字。随着NIS被人们越来越广泛的使用,某些名称已与人们分不开了,所以YP一直以与NIS相关命令的前缀形式继续存在着,比如ypserv、ypbind等等。 
       NIS是基于RPC的,是一个客户机/服务器系统,ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所以客户端的住处查询都发往服务器。ypserv是回答客户端查询的服务器进程。你可以以同样的方式通过NIS向网络上的所有机器同步/etc/hosts中的主机名信息。 
       NIS在所谓的包含“键-值对”的maps中保存数据库信息。Maps被存储于运行NIS服务器的中央主机中,从该主机中,客户可以通过各种RPC调用检索信息。

二、为什么要使用NIS

NIS的主要功能是对主机账号系统等系统信息提供集中的管理。

在一个有多台Linux服务器的应用系统中,用户账号的维护是个比较麻烦的事情。因为:每台Linux可能有很多的账号,由于Linux服务器为同一个企业提供服务,因此每台服务器上的账号信息是相同的,这样对于系统管理员的工作量就大了,需要在每台服务器中为用户建立同样的用户账号和初始口令,而且容易出错。并且一旦有修改口令的需求,那么每次修改口令时都需要登录到系统中的每台服务器,进行设置。

三、NIS服务的C/S模式

NIS的服务器集中维护用户的账号信息,当NIS客户机需要进行用户登录的信息验证时,就想NIS服务器发出查询请求。当系统中的一台NIS服务器为多台NIS客户机提供服务时,用户登录系统中的任何一台NIS客户机都会从NIS服务器进行登录验证,这样就实现了集中管理用户账号的功能。

在NIS服务器的数据库中主要包含以下几类信息:用户账号信息,组账号信息,IP地址和主机名称对应记录的信息,这些信息被保存在不同的数据库文件中进行集中的管理。

四、NIS常见的名词

NIS域名:与windows的域模式类似,为了划分NIS的管理范围,NIS服务器和客户端组成NIS域,使用相同的域名,只有在同一个域下,客户端才能请求相应的信息。

Portmap:NIS服务依赖RPC,必须启动portmap进程,才能启用RPC.

Ypserv:这个是NIS服务的主进程。

Rpc.yppasswdd:这是一个服务程序,其允许客户端在本地修改登录密码,然后接受该操作信息,用户不必登陆至NIS主服务器进行操作。

Rpc.ypxfrd:这个是NIS主/从服务器数据同步进程。

       Ypbind:这个是NIS客户端的进程。

五、NIS的基本原理:

NIS客户端在登录系统时,输入用户名与口令。客户端首先在本地查找有无该用户的信息,如果本地并没有找到登录用户的信息,客户端就会向NIS服务器请求验证,如果NIS服务器验证通过,该用户则可以成功登录。

六、NIS的工作模式

主要有:单域,单NIS服务器,单域多NIS服务器(NIS主服务器和NIS辅助服务器),多域多NIS服务器。

七、安装NIS服务所需要的软件包

1) ypserv-2.19-3.i386.rpm这个是NIS服务的主程序包

2) yp-tools-2.9-0.1.i386.rpm这个是提供NIS客户端设定功能的软件包

3) ypbind-1.19-7.e15.i386.rpm提供NIS客户端的查寻指令功能的软件包

4) portmap-4.0-65.2.2.1.i386.rpm启动RPC所必须的软件包

八、搭建NIS服务器

NIS服务器的基本网络配置信息如下:

图片

1) 为NIS服务器添加NIS域名,编辑/etc/sysconfig/network文件,在最后一行添加:NISDOMAIN=NIS域名即可。vim /etc/sysconfig/network ,添加内容如下图所示:

图片

2) 安装NIS服务器所需的程序包。由于ypbind、portmap、yp-tools等程序在安装系统时已经安装完毕,所以在本案例中我们只安装NIS的主程序包ypserv,具体操作如下图所示:

图片

3) 编辑ypserv服务的配置文件,并在配置文件中设置允许访问的网段,然后启动ypserv服务。操作如下图所示:

图片

在配置文件中添加如下图内容(图中允许172.24.0.0网段访问nis域)

图片

启动ypserv服务,方法如下图所示:

图片

4) 在NIS服务器上新建立目录,并添加新用户,将新用户的宿主目录指定为新建立的目录。由于添加用户时并没有将用户的shell复制到该目录下,所以需要手工从/etc/skel目录复制shell到新的目录中。最后还需要将该目录的属主与属组指定为该用户自己,并设置权限不允许其它人访问。具体操作如下图所示:

图片

5) 创建NIS的数据库

NIS服务会将用户账号、密码等相关的信息存入数据库当中,当客户端有查询请求时,NIS服务会从数据中提取客户端所需要的资料。但是NIS的用户数据库并不是安装后就自动建立的,而是需要使用ypinit命令来将服务器上的与账号相关的文件制作成数据库文件。具体操作如下图所示:

图片

此时NIS服务器已经基本完毕。客户端已经可以加入到NIS域。虽然客户端已经可以加入NIS域,而且客户端也可以使用NIS用户登录到NIS域,但是屏幕会提示没有找到用户宿主目录的信息,这是因为由于NIS客户机本地文件系统中没有在/home目录下建立用户宿主目录,我们可以采用以下方法解决:

在NIS服务器中使用NFS将NIS用户的宿主目录输出(共享),即:将/home/rhome/ 作为NFS共享目录输出给所有的NIS客户机。方法如下:编辑/etc/exports文件,添加关于/home/rhome 目录的输出(共享)设置。具体操作:vim /etc/exports,并添加输出目录。添加内容如下图所示:

图片

    重新启动NFS服务,并设置ypserv、nfs服务开机时自动启动,方法如下图所示:

图片

6) 更新NIS用户

如果以后NIS服务器上添加了新的NIS账户,需要重新生成ypserv的用户数据库,方法有两种:

A、重新执行/usr/lib/yp/ypinit -m 命令(如上述步骤5);B、进入"/var/yp"目录,然后执行make命令,方法详见下图所示:

图片

九、将客户端加入到NIS域中

  在客户端设置好IP地址(本案例中客户端IP必须在172.24.0.0/16网段),使其可以与NIS服务器通迅。然后在NIS客户端输入authconfig-tui命令,方法如下图所示:

图片

在新窗口中选择“use NIS”,并且选择“Next”,如下图所示:

图片

在下图中输入NIS的域名和NIS服务器的IP地址,然后选择OK即可,如下图所示:

图片

通过以下操作客户端已经成功的加入到NIS域中

此时客户端虽然可以使用NIS服务器中的账户实现本地登录系统,但系统会提示“找不到shell”,因为客户端本地并没有NIS账户的宿主目录,并没有NIS账户自己的“命令解释器”。因此需要将服务器上已经输出的NFS目录挂载到本地的相关目录中。

首先:在客户端可以使用ypcat  passwd命令查看NIS服务器上有哪些可以使用的NIS账户,而且还可以通过showmount -e NIS服务器IP地址 的方式来查看NIS服务器中有些目录已经通过NFS服务共享了。操作如下图所示:图片

说明:上图中查看到NIS服务器上两个用户,其中用户nisuser01的"家目录"在/home/rhome/nisuser01

图片

说明:上图中查看到NIS服务器上的/home/rhome目录已经输出(共享),即nisuser01的"家目录"已经输出(共享),所以客户端要在本地也建立相同的目录(本例中为:/home/rhome,如上图所示)。

为了实现NIS用户在客户端登录时自动将NIS服务器上自己的"家目录"挂载到客户端本地,需要使用autofs服务。所以我们需要在客户端编辑、修改/etc/auto.master文件。方法如下: vim /etc/auto.master,添加内容如下图所示:(关于autofs服务请参阅后期相关日志)

图片

然后编辑/etc/auto.misc,方法如下:vim /etc/auto.misc  , 添加内容如下图所示:

图片

最后重新启动autofs服务,方法如下:service autofs restart ,操作如下图所示:

图片

    使用NIS用户在客户端登录测试。方法如下:su - nisuser01 ,操作如下图所示:

图片

 

十、关于NIS穿越防火墙的设置

1、解决客户端穿越防火墙加入域:由于NIS服务器是基于RPC服务工作,所以它使用UDP的111端口号和其它的一些动态高位端口(即不固定的1024以上的端口,关于RPC的工作原因,详见后期日志)。这样对于防火墙的设置就比较困难了,为此我们首先需要手工为rpc.xfrd和ypserv服务指定静态端口。方法如下:vim /etc/sysconfig/network ,并添加YPSERV_ARGS="-p 834"和YPXFRD_ARGS="-p 835"两行,操作如下图所示:

图片

提示:不要忘记重新启动network 服务(service network restart)

然后再开放防火墙UDP 111端口和UDP 834、835端口,方法如下图所示:

图片

通过以下两步操作,客户端已经可以穿越防火墙加入到NIS域中。

2、解决客户端使用ypcat passwd命令查看NIS服务器用户时提示错误的问题:如果客户端穿越防火墙使用ypcat passwd命令查看NIS服务器上有哪些用户,系统会提示"不能与portmap服务沟通"的错误,如下图所示:

图片

此时,需要在NIS服务器上设置iptables防火墙,开启TCP的111端口和TCP的834、835端口,方法详见下图所示:

图片

提示:不要忘记保存iptables的设置(service iptables save)

3、解决客户端穿越防火墙使用showmount 命令查看NIS服务器有哪些目录被输出(共享)的问题:如果客户端穿越防火墙使用showmount -e 172.24.254.254命令查看NIS服务器有哪些目录被输出(共享),系统会提示"无法联系RPC服务",效果如下图所示:

图片

上图中的错误提示说明了:NFS服务输出(共享)目录时不能穿越防火墙。(有关NFS的原理,请详见后期日志)注意:NFS服务是使用TCP的2049端口工作,但NFS服务还需要依赖RPC服务,因此它即使用TCP的2049、RPC的111端口,又使用一些其它的动态高位端口,所以也需要我们为NFS服务指定静态工作端口。为了更方便的为NFS服务手工设置静态端口,需要借助system-config-nfs工具包。所以我们首先安装system-config-nfs工具包,方法见下图所示:

图片

然后通过图形方式打开“服务器设置”的“NFS”工具,方法见下图所示:

图片

在系统弹出的“NFS服务器配置方案”窗口中,选择“服务器设置”,如下图所示:

图片

在新弹出的“NFS服务器设置”窗口中指定NFS服务工作所需的静态端口,一般为4002-4004之间的端口。方法见下图所示:

图片

最后设置iptables防火墙,开启TCP的2049端口以及TCP和UDP的4002到4004端口,方法详见下图所示:

图片

<完>

关于NIS服务器就讨论到这里,如果有问题请与我联系。

流星:caiyuanji (at) 163.com  QQ:85104942

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值