NIS

摘要:Network Information Service最早应该是称为Sun Yellow Pages(简称yp),也就是Sun这家公司出

了一个名为Yellow Pages的服务器软件,请注意,NIS和YP是一摸一样的。黄页就是好比家里的电话薄。正如你

去查询一家厂商的电话号码,通常就是直接查找黄页。而这个NIS也一样,当用户登录时,Linux系统就会到NIS

主机上去找登陆者所用的账号与密码信息加以对比,供用户登陆时验证。
    网络信息服务(NIS)是集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理

工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们

只简单的使用维护在NIS服务器的文件即可。
     NIS提供的信息主要包括如下所示:
/etc/passwd  供用户账号 、UID、GID、默认目录、Shell等
/etc/group   提供组数据以及UID的对应,还有该组的成员
/etc/hosts   提供主机名称与IP地址的对应,常用于Private IP主机的名称对应
/etc/services 每一种服务(daemon)所对应的端口(port number)
/etc/protocols 基本的TCP/IP数据包协议
/etc/netgroup  网络群组的定义与使用
/etc/rpc       每种RPC服务器所对应的进程号
/var/yp/Servers  NIS服务器提供的数据库
NIS的运作流程
     由于NIS服务器主要是提供用户登陆的信息客户端主机来查询之用,所以,NIS服务器所提供的数据当然需

要用到传输与读写比较快的数据库文件系统,而不是传统上的纯文本数据。为了是想了个目的,NIS服务器需要

将前面提到的文件做成数据库文件,然后使用网络通信协议让客户端主机来查询。
   (1)NIS  Server 运行流程
          NIS 先将本身的账号密码相关文件制作成数据库文件
          若有账号密码变动时,需要重新制作数据库文件
   (2)NIS Client运行 流程
          NIS Client若有登陆是,会查询其本机的/etc/passwd 、/etc/shadow等文件
          若在NIS Client本机找不到相关的账号信息,才开始向整个NIS网段的主机广播查询
          NIS Server响应请求
NIS服务器端的设置
    NIS服务器端的作用主要用于提供数据库给客户端作为验证之用,当然服务器端可以根据来源分为

master/slave(此时,我们不做slave服务端)
     所需软件
          yp-tools :提供NIS相关的查询命令功能
          ypbind : 提供NIS Client端的设置软件
          yp-server:提供NIS Server端的软件
          portmap: 这是RPC必须的软件
NIS软件架构
     1.配置文件方面
          /etc/syscinfig/network:主要用于设置NIS域名称(nisDomainname)
          /etc/hosts:很重要,至少需要有各个NIS服务器的IP地址与主机名对应。
          /etc/ypserver.conf:这是最重要的配置文件,用于设置NIS客户端是否可登陆的权限
          /etc/netgroup :设置信任的主机和域名
          /etc/yp/Makefile:建立于数据库有关的操作设置文件
     2.服务器提供的主要服务方面
          /usr/sbin/ypserver:就是NIS服务器提供的主要服务
          /usr/sbin/rpc.ypxfrd:用作Master/Slave主机之间传输数据库的服务
          /usr/sbin/rpc.yppasswd :提供额外的NIS客户端的用户密码修改服务,通过这个服务,NIS客户端

可以直接修改在NIS服务器上的密码,使用程序是yppasswd命令。
     3.与数据库有关的命令方面
             /usr/sbin/yppush:Master主机将有关数据直接送至Slave的命令
             /usr/lib/yp/ypinit:建立数据库的命令,非常有用。
             /usr/lib/yp/ypxfr:传送数据库的命令。
NIS服务端的配置
    1.设置NIS的域名(NIS Domain Name)
     所有的NIS Server/client都需要设置NIS域名才行,方法很简单,直接用nisdomainname这个命令来执行

即可。
     nisdoaminname  [NIS 域名]
    或者直接编辑/etc/sysconfig/network即可,添加如下一行
     NISDOMAIN=[域名]
   2.主要配置文件/etc/ypserver.conf
     这个就是NIS Server主要的配置文件。内容简单,保留默认值就行了。
       当然要讲信任的网段设置一下
         127.0.0.0/255.255.255.0   : * : * : none
         192.168.0.0/255.255.255.0 : * : * : none
         *                         : * : * : deny
   3.设置主机名称
     我们谈到的NIS大都给局域网内的主机使用,所以不必使用DNS设置了。所以为了内网的互相通信,编

辑/etc/hosts,设置好主机与IP地址的对应。
   4.启动相关服务
     包括RPC、ypserver 、yppasswd
      /etc/init.d/portmap start
      /etc/init.d/ypserver start
      /etc/init.d/yppasswd start
   5.建立数据库
      将主机上的账号文件装成数据库文件。
      /usr/lib/yp/ypinit -m
NIS客户端的配置
软件包:yp-bind ,yp-tools(主要提供查询的软件)
配置文件:
       /etc/syscinfig/network:主要用于设置NIS域名称,让ypbind启动时可以设置好。
       /etc/hosts:很重要,至少需要有各个NIS服务器的IP地址与主机名对应。
       /etc/yp.conf:这个则是ypbind的主配置文件,里面主要规范了NIS Server。
       /etc/nsswitch.conf:这个文件最重要,用于规范账号密码与相关信息的查询顺序,默认是

先/etc/passwd,然后是NIS等。
   启动NIS Client的设置非常简单,最主要的是先加入NIS Domain,然后再启动ypbind。这个过程如下所示:
1、设置好NIS Domain以及/etc/hosts主机名对应关系
   直接建立与域名
        nisdoaminname     notexample
   或者在配置文件中/etc/sysconfig/network编辑
     vim /etc/sysconfig/network
     NISDOMAIN=notexample
   编辑/etc/hosts使主机名称和IP对应。
     192.168.0.254    Master.notexample
2、启动ypbind来连接至NIS Server
   要启动ypbind,需要设置很多文件。redhat提供了setup编辑authconfig,通过这个工具可以很快的设置

ypbind。
   当然亦可以手动编辑这些文件:
     /etc/nsswitch.conf(修改主机验证功能的顺序)
     /etc/sysconfig/authconfig(认证机制)
     /etc/pam.d/system-auth(登陆所需的PAM认证过程)
     /etc/yp.conf(ypbind的配置文件)
   1 vim /etc/nsswitch.conf
   修改文中的这些内容
       passwd:   files   nis(加上NIS)
       shadow:   files   nis(加上NIS)
       group:    files   nis(加上NIS)
       hosts:    files   nis(加上NIS)
   2 vim /etc/sysconfig/authconfig
     只需将NIS部分的改成yes即可
      USENIS=yes
   3 vim /etc/pam.d/system-auth
      找到这一行 :use_shadow     md5    shadow
      后面填写上nis即可
   4 vim /etc/yp.conf
      添加Domain
      Domain    notexample(NIS域)   Server(主机名称)
可以启动ypbind了  ypbind start
NIS Client  检验:
     yptest检验数据库 
       yptest
     ypwhich检验数据库数量
        ypwhich   -x 
     ypcat 读取数据库内容
         ypcat [-h NISServer]  [数据库名称]
         ypcat   passwd.byname