Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136098
  • 博文数量: 24
  • 博客积分: 2022
  • 博客等级: 大尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-21 01:00
文章分类
文章存档

2010年(1)

2009年(23)

我的朋友

分类: LINUX

2009-10-23 17:37:27

NISNetwork Information Service)网络信息系统,是对主机账号等系统信息提供集中管理的网络服务。为什么要使用NIS服务?

在一个具有多台LINUX服务器的应用系统中,用户账号的维护是一个比较麻烦的管理工作,主要表现在以下几个方面:

*每台Linux服务器都可能有上百个用户账号;

*由于所有的服务器是为同一个组织(公司)提供服务,因此在每台服务器上都维护着同样的用户账号;

*为了系统中的用户使用方便,用户在每台服务器中都拥有同样的用户名和登录口令;

*对于系统管理员,需要在每台服务器中为用户建立同样的用户账号和初始口令;

*对于系统中的用户,每次修改用户的口令时,都需要登录到系统中的每台服务器,分别对服务器中账号设置口令;

综上所述,使用传统的基于主机文件的账号管理方式,无论对系统管理员还是对系统中的用户都不是很方便,而使用NIS服务能够较好地解决用户账号集中管理的问题。

NIS服务最早是由Sun公司提出的,因此也被称做Sun Yellow Pages,简称YPYellow Pages最常见的实例就是电话黄页,即用于查询电话号码和用户名的电话簿,供用户集中查询电话用户的信息。NIS服务之所以最早时也被称为YP,正是由于NIS能够对UNIX系统中的用户账号等信息提供集中和管理。

NIS服务器的应用结构分为NIS服务器和NIS客户机两种角色:

*NIS服务器集中维护用户的账号信息(数据库)供NIS客户机查询。

*NIS客户机需要进行用户登录信息的认证时,就向NIS服务器发出查询请求,当用户提供的登录信息与NIS服务器中的数据库信息相符时,用户就可以正常登录NIS客户机。

*当系统中的一台NIS服务器为多台NIS客户机提供服务时,用户登录系统中的任何一台NIS客户机都会从NIS服务器进行登录认证,这样就实现了用户账号的集中管理。

NIS服务器为NIS客户机提供的信息不仅限于用户账号信息,在NIS服务器的数据库中包括以下几类信息:

*用户账号信息,包括用户名,登录口令和用户宿主目录等信息,用于取代Linux主机中的passwd文件和shadow文件中的作用。

*组账号信息,包括组账号等,用于取代Linux主机中group文件的作用。

*IP地址与主机名称对应记录的信息,用于取代Linux主机中hosts文件的作用。

为了方便NIS客户机的查询,以上这些信息在NIS服务器中被保存在不同名称的数据库(文件)中进行集中管理。

NIS服务需要分别在服务器端和客户端进行配置,下面分别介绍配置方法:

一,NIS服务器端的配置管理步骤

   服务器端需安装的相关软件包:

ypserv-2.19-3.i386.rpm(第三张光盘,默认未装)-----------------提供NIS服务的主要软件包,需手动安装;

ypbind-1.19-7.el5.i386.rpm(第一张光盘,默认已装)------------系统默认被安装的客户端需要使用的软件包;

yp-tools-2.9-0.1.i386.rpm(第一张光盘,默认已装)---------------系统默认被安装的提供对NIS服务器的查询和管理工具软件包;  

主配置文件:/etc/ypserv.conf  工作目录:/var/yp/   服务进程名称:ypserv    

1)安装所需软件包:

#rpm  ivh  ypserv-2.19-3.i386.rpm

2)确认开启NIS服务所依赖的其它服务:

 1.  ypserv服务器和NFS服务器类似,都需要有portmap服务的支持,因此在安装ypserv之前需要先确认portmap软件包已经安装,portmap服务已正常启动,并确保portmap服务在默认的系统运行级别中是开启的。

     #rpm  -q  portmap

     #service  portmap  status

     #chkconfig  --level  35  portmap  on

2.  NIS服务器为RHEL4系统,ypserv服务的启动和运行还需要timetime-udp这两个服务的支持,而timetime-udp是受xinetd超级服务器管理的服务,因此需要确认timetime-udp为启动状态:

    #chkconfig  --list  | grep  time

RHEL4系统中timetime-udp服务的默认状态是禁用状态,因此需要使用chkconfig命令设置这两个服务的状态为启用,并重亲启动xinetd服务使设置生效:

    #chkconfig  time  on

    #chkconfig  time-udp  on

    #chkconfig  --list | grep  time

    #service  xinetd  restart

 

 

 

3)建立NIS的域名:

NIS服务器中需要建立相应的域名,此域名与DNS服务器中的域名没有直接的关系

nisdomainname命令用于建立NIS服务器的域名,需要指定一个NIS域名作为该命令的参数。由于NIS服务器主机每次启动时都需要进行NIS的域名设置,因此需要将这条设置域名的命令nisdomainname添加到/etc/rc.d/rc.local文件中,让系统启动时自动设置NIS域名:

     #nisdomainname  testname   (假设NIS域名为testname)

     #echo  /bin/nisdomainname  testname >> /etc/rc.d/rc.local

     #nisdomainname             (查看NIS域名)

4)修改“/etc/sysconfig/network”文件:

为了便于NIS服务器主机能够进行正确的网络设置,同时还需要将NISDOMAIN=testname配置项添加到/etc/sysconfig/network文件中:

     #echo  NISDOMAIN=testname >> /etc/sysconfig/network

5 设置ypserv服务的配置文件:

1 主配置文件/etc/ypserv.conf的配置-------NIS服务器程序(ypserv)的配置文件为/etc/ypserv.conf ,对于该配置文件的内容不需要做太多修改:

# ypserv.conf In this file you can set certain options for the NIS server,

#         and you can deny or restrict access to certain maps based

#         on the originating host.

#         See ypserv.conf(5) for a description of the syntax.

# Some options for ypserv. This things are all not needed, if

# you have a Linux net.

# Should we do DNS lookups for hosts not found in the hosts table ?

# This option is ignored in the moment.

dns: no

# How many map file handles should be cached ?

files: 30

# Should we register ypserv with SLP ?

slp: no

# After how many seconds we should re-register ypserv with SLP ?

slp_timeout: 3600

# xfr requests are only allowed from ports < 1024

xfr_check_port: yes

# The following, when uncommented,  will give you shadow like passwords.

# Note that it will not work if you have slave NIS servers in your

# network that do not run the same server as you.

# Host                     : Domain  : Map              : Security

#

# *                        : *       : passwd.byname    : port

# *                        : *       : passwd.byuid     : port

# Not everybody should see the shadow passwords, not secure, since

# under MSDOG everbody is root and can access ports < 1024 !!!

*                : *       : shadow.byname    : port

*                : *       : passwd.adjunct.byname : port

# If you comment out the next rule, ypserv and rpc.ypxfrd will

# look for YP_SECURE and YP_AUTHDES in the maps. This will make

# the security check a little bit slower, but you only have to

# change the keys on the master server, not the configuration files

# on each NIS server.

# If you have maps with YP_SECURE or YP_AUTHDES, you should create

# a rule for them above, that's much faster.

# *                        : *       : *                : none

 

ypserv.conf文件中最重要的配置部分是访问控制的设置,管理员通过添加访问控制的设置允许或拒绝指定的主机使用NIS服务。

访问控制记录由四个字段构成,从左到右依次是主机地址网络域名映射数据库类型安全等级,记录中的各字段之间用冒号分隔,格式如下:

主机地址:网络域名:映射数据库类型:安全等级

访问控制记录中各字段的含义如下:

*主机地址---可以是主机的IP地址或主机名称,也可以是子网地址,例如192.168.1.0/255.255.255.0,若使用*号则表示所有的主机。

*网络域名---在设置记录中其实并不常用,通常设置为*号即可。

*映射数据库类型---NIS服务器中的数据库名称,可以是单独的数据库,例如passwd.byname,也可以使用*号代表全部数据库。

*安全等级---可以设置为none,port,deny关键字。none表示客户机可无条件的访问NIS服务器;port表示仅允许客户机从1024以下的端口访问NIS服务器,由于只有root用户才可以使用1024以下的端口,因此port设置相对安全些;deny表示无条件拒绝客户机对NIS服务器的访问,通常用作默认的访问策略,可提高系统的安全性。

例:一个ypserv.conf文件中最基本和最常用的访问控制记录

     127.0.0.0/255.255.255.0     :  *  :  *  :  none

     192.168.1.0/255.255.255.0   :  *  :  *  :  none

     *                           :  *  :  *  :  deny

其中127.0.0.0/255.255.255.0网段设置了主机环回地址的访问策略;192.168.1.0/255.255.255.0设定的是NIS客户机所在局域 网的网段,允许该网段中的NIS客户机访问NIS服务器;最后一行是默认的访问策略,设置其他的所有主机将被NIS服务器无条件拒绝访问

2securenets安全配置文件-----虽然ypserv.conf配置文件中可以使用访问控制记录配置NIS服务器中数据库的访问控制,除此以外NIS服务器还提供了securenets文件用于对NIS客户端主机的访问控制。而且securenets文件具有比ypserv.conf配置文件更高的对主机进行访问控制的级别和效率。

securenets文件应该保存在/var/yp目录中,但是系统中/var/yp目录中默认并没有securenets文件,需要管理员进行手动建立(/usr/share/doc/ypserv-2.19目录中有一个样例)。当“/var/yp”目录中,securenets文件不存在时,NIS服务器将允许所有主机访问NIS服务器(默认的安全设置有欠缺)。

securenets文件的配置比较简单,可以使用主机网络两种配置记录.主机配置记录:以host关键字开始,空格后设置主机的IP地址(不要使用主机名);网络配置记录:由子网掩码和网络地址两部分组成,中间用空格进行分隔,需要注意子网掩码在前,网络地址在后的顺序;符合访问控制记录的主机被允许访问NIS服务器,其他主机将被拒绝访问。

例:配置一个securenets文件示范

   #vi  /var/yp/securenets   (需手动建立)

   host  127.0.0.1

   255.255.255.0  192.168.1.0

其中host  127.0.0.1记录设置允许NIS服务器本机访问;255.255.255.0  192.168.1.0记录设置192.168.1.0/24子网中的所有主机允许访问NIS服务器,其他的所有主机都被NIS服务器拒绝访问。

6)启动NIS服务器

    在完成对ypserv.conf文件的配置后,可以启动NIS服务器。NIS服务器需要启动ypservyppasswdd两个服务程序。在ypservyppasswdd服务程序运行之前需要先确认portmap服务程序已经运行,因为NIS服务的运行需要portmap服务程序的支持。并且在安装ypserv软件包时,并没有设置ypservyppasswdd服务程序在系统启动时自动启动,因此需要使用chkconfig命令手动进行设置:

       #service  portmap  status

       #service  ypserv  start

       #service  yppasswdd  start

       #chkconfig  --level 35  ypserv on

       #chkconfig  --level 35  yppasswdd on

7)构建NIS数据库

    ypservyppasswdd服务程序运行后,需要使用ypinit命令构建NIS服务器的数据库文件。ypinit命令位于/usr/lib/yp/目录中,使用-m命令选项构建数据库。

       #/usr/lib/yp/ypinit  -m   (需用绝对路径)

 

    ypinit命令将根据NIS服务器主机中的本地系统文件信息创建数据库文件,建立的数据库文件被保存在/var/yp目录中与NIS域名同名的子目录之中。

需要注意NIS服务器主机中对本地系统用户账号,组账号等信息(文件)更改后都需要使用ypinit命令重新构建数据库文件的内容,否则NIS客户端主机获得的信息不会自动更新。

  由于ypinit -m命令其实是调用make命令,并根据/var/yp/目录中的Makefile文件的配置内容进行NIS服务器数据库文件的创建,因此修改“Makefile”文件中的配置将会影响创建NIS服务器的数据库文件的过程和结果。

 二,NIS客户端的配置管理步骤

NIS客户机与NIS服务器通常不会运行在同一个服务器主机中。

1NIS客户端所需的软件包

    RHEL5系统作为NIS客户机使用时,需要使用ypbindyp-tools两个软件包,这两个软件包是默认安装到系统中的。因此不需要手动进行安装。

        #rpm -qa | grep ^yp

        ypbind-1.19-7.el5   (ypbind是作为NIS客户端与NIS服务器进行通信的服务程序,

软件包中包括执行程序,配置文件和启劝脚本等文件)

        yp-tools-2.9-0.1    (包括了对NIS服务器进行测试,查询和管理功能的工具程序,所有的命令文件名都以yp开始)

  2)设置hosts文件

       NIS客户机的hosts中应添加NIS服务器的主机名称解析记录,以便NIS客户机能够使用主机名访问NIS服务器。

        #echo 192.168.1.2  NISserver >> /etc/hosts

  3)建立NIS域名

      NIS客户机建立NIS域名的操作方法与NIS服务器中完全相同,需要进行以下操作:

    #nisdomainname  testname                                     (与服务器相同,假设NIS域名为testname)

#echo /bin/nisdomainname  testname>> /etc/rc.d/rc.local (NIS服务器主机每次启动都需要进行NIS的域名设置)

#echo  NISDOMAIN=testname >> /etc/sysconfig/network     (以便NIS服务器主机能够进行正确的网络设置)

  4)设置yp.conf配置文件

       ypbind服务程序的配置文件是yp.conf,只需要在该配置文件中设置NIS域名和NIS服务器的主机名即可:

     #ehco  domain testname  server  NISserver>> /etc/yp.conf
 
 配置语句中domain testname server NISserver设置了当前使用的NIS域名testname,所使用的NIS服务器的主机名

 NISserver.

 5)设置etc/nsswitch.conf文件

RHEL5系统中的/etc/nsswitch.conf文件用于设置系统中信息的查询方式,对于用户账号,组账号等信息在nsswitch.conf文件中的默认设置为只使用本地文件,对于主机名称解释使用本地文件和DNS服务器。

       nsswitch.conf文件中相关设置项不是代表系统中的文件或命令,而是代表相关信息的查询方式,具体含义如下:

 passwd:  files          *passwd表示用户账号信息的查询

shadow:  files          *shadow表示用户口令信息的查询

          group:   files          *group表示用户组账号信息的查询

          hosts:   files  dns     *hosts表示主机名信息的查询

NIS客户机中需要修改nsswitch.conf文件,在files之后设置使用nis,即优先使用本地文件,然后使用NIS服务器获取信息,

如:

 passwd:  files  nis

shadow:  files  nis      

          group:   files  nis      

      hosts:   files  nis  dns

 

6)启动ypbind服务程序

    NIS客户机需要运行ypbind服务程序来实现对NIS服务器的信息访问,在启动ypbind服务之前需要先确认portmap服务已经启动,因为ypbind服务程序的运行同样依赖于portmap服务。并且RHEL5系统中虽然默认安装了ypbind软件包,但是并没有设置ypbind服务程序的自动启动,管理员需要使用chkconfig命令手动设置ypbind服务在运行级别35中自动启动。

     #service portmap status

     #service ypbind start

     #chkconfig  --level  35  ypbind  on

7)在NIS客户机上测试与NIS服务器的连接

    yp-tools软件包中提供了yptest ,ypwhich ,ypcat共三个命令工具可用于在NIS客户机中测试与NIS服务器的连接,所有的测试命令都是通过NIS客户机中的ypbind服务程序对NIS服务进行查询的。

   <1> yptest:是基本的NIS服务器测试命令,该命令会对NIS服务器的域名,主机,数据库及其内容进行自动测试,并显示测试的结果。

         #yptest

   <2>ypwhich可显示NIS客户机所使用的NIS服务器的主机名称,当ypwhich使用“-x”选项时会显示NIS服务器中使用的数据库和映射文件的名称。

         #ypwhich

         NISserver  (只会显示NIS服务器主机名)

         #ypwhich -x

<3>ypcat:ypcat -x会与ypwhich -x命令显示相同的查询信息。当使用数据库名作为ypcat命令的参数时,ypcat命令将显示指定数据库的内容。管理员可以从ypcat命令的结果中查询到NIS服务器数据库中非常有用的信息。

    #ypcat -x

    #ypcat  group  (使用数据库名作为命令参数)

8NIS客户端用户登录

   NIS客户端主机中测试与NIS服务器连接成功后,就可以尝试使用NIS服务器中的用户账号登录NIS客户机了.但当使用NIS服务器中的用户账号成功登录系统后,屏幕会提示没有找到用户宿主目录的信息,这是由于NIS客户机本地文件系统中没有在/home目录下建立用户的宿主目录。(由于系统防火墙的默认配置,可能造成NIS客户机和NIS服务器之间无法进行通信,如果用户在NIS客户机中登录不成功,可以先将NIS服务器和NIS客户机的iptables防火墙服务关闭,命令:#service iptables stop#iptables -F

9)用户密码修改

   用户登录NIS客户端后,使用yppasswd命令可以修改NIS服务器端保存的用户口令,而不能用passwd命令修改。用户执行yppasswd命令后将提示输入旧的用户口令,然后输入两次新口令,若新口令符合系统要求,NIS服务器中该用户的口令将更新为新设的口令。

   root用户执行yppasswd命令指定用户名作为命令参数时,可修改指定用户的口令,但是还需要先输入root的用户口令。

三,NIS基本应用

  上面的内容介绍了NIS服务器端的配置管理和NIS客户端的配置使用,并且实现了用户账号的集中管理。但是在NIS客户机的本地文件系统中由于没有建立用户的本地账号,因此并不会存在用户的宿主目录。可以通过NFS服务和NIS服务的综合运用,实现用户登录任何一个NIS客户机后都使用同一个属主目录。步骤如下:

(1)NIS服务器中输出  NFS共享目录

    NIS服务器主机中具有所有用户的本地账号,因此NIS服务器的文件系统中也为每个用户建有宿主目录,所有普通用户的宿主目录都在“/home”目录中,因此可以将“/home”作为NFS共享目录输出给所有的NIS客户机。

   编辑NIS服务器的“/etc/exports”文件,添加“/home”共享目录的设置:

     /home      192.168.1.0/24(rw,async,no_root_squash)

   启动NIS服务器主机中的NFS服务器程序:

     #service  nfs  start

(2)在所有的NIS客户机中挂载NIS服务器中的共享目录

   在应用系统的所有NIS客户机中设置挂载NIS服务器中的NFS共享目录“/home”。在NIS客户机的“/etc/fstab”文件中添加NFS文件系统的自动挂载设置,NIS客房机以后每次启动都会自动挂载NIS服务器中的“/home”文件系统:

  #vi /etc/fstab

NISserver:/home/         /home       nfs      defaults   0  0

  使用mount命令将按照fstab文件中的设置挂载NIS服务器主机中的“/home”文件系统:

   #mount  /home

   #ls   /home/

经过以上设置后,在每个NIS客户机中进行用户登录,用户使用的都是NIS服务器中相同的宿主目录,这样不但实现了用户账号的集中管理,而且还实现了用户文件在各NIS客户机之间的“漫游”。( 监时挂载:#mount t nfs 192.168.1.2:/home  /home)

阅读(3845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~