RHEL4 NIS 服务配置实例

NIS概述:
        NIS,是Network Information Services的简写,意为网络信息服务 ;其最初是由Sun Microsystems组织研发, 主要目标是用于UNIX系统的集中管理。 现在基本上已成为了业界标准; 任何主流的类 UNIX 系统 (Solaris,HP-UX,AIX,Linux,NetBSD,OpenBSD,FreeBSD等等) 都支持 NIS。
  NIS原来的名称为黄页(Yellow Pages),但由于商标的问题,Sun将其改名为现在的名字。NIS是个基于 RPC 的客户机/服务器系统, 他允许在一个 NIS 域中的一组机器共享一系列配置文档。 这样, 系统管理员就能够配置只包含最基本配置数据的 NIS 客户机系统, 并在单点上(主NIS服务器)增加、删除或修改配置数据。
  在 NIS 环境中, 有三种类型的主机: 主服务器(master), 从服务器(slave), 和客户机(client)。服务器的作用是充当主机配置信息的中央数据库,保存着用户帐号、组帐号等配置信息的权威副本,而从服务器则是保存这些信息的冗余副本。 客户机将使用这些信息。


配置示例:

本例中网络模型如下:
Server  192.168.0.1               NIS主服务器
Linux    192.168.0.2               NIS从服务器
Client   192.168.0.123          NIS客户端

A. 服务端的设定

配置NIS服务端:由于NIS基于RPC协议,所以事先应打开portmap服务;

NIS相关文档
    * /etc/ypserv.conf:这是最主要的设定档, 可以规范 NIS 客户端是否可登入的权限。
    * /etc/hosts:非常重要!每一部主机都需要记录才行!!
    * /etc/netgroup:设定信任的主机与网域;
    * /var/yp/Makefile:与建立数据库有关的动作设定文件;
    * /etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。
在/etc/sysconfig/network中设定一个NIS domain:NISDOMAIN=mydomain
修改/var/yp/Makefile决定需共享的数据
在/var/yp/securenets中指定许可共享的网段

1、设定 NIS 域名

# nisdomainname nisname
# vi /etc/sysconfig/network
添加:
NISDOMAIN=nisname
#vi /etc/rc.local
添加:
/sbin/nisdomainname nisname

2、默认情况下,RHEL4没有安装ypserv包,此软件在第一张光盘上,安装上即可
查看是否已安装ypserv
# rpm -qa |grep yp
ypbind-1.17.2-3
yp-tools-2.8-7
挂载第一张光盘并安装 ypserv
# mount /dev/cdrom /media/cdrom
# rpm -ivh /media/cdrom/RedHat/RPMS/ypserv-2.13-5.i386.rpm
warning: /media/cdrom/RedHat/RPMS/ypserv-2.13-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
   1:ypserv                 ########################################### [100%]
3、主配置文档/etc/ypserv.conf

此部分配置比较简单,大部分保持默认即可,最后一段来定义访问安全性。但一般情况下,管理员应该使用securenets文档,未必用ypserv.conf定义安全性。
这部分语法如下:
    [Host] : [Domain] : [Map] : [Security]
    [主机名称/IP] : [NIS 域名称] : [可用资料库名称] : [安全限制]
字段如下:
 host :授权或禁止访问的电脑,他由地址/掩码对确定.例如 192.168.1.0/255.255.255.0 . *表示任何主机;
 map :该字段表示访问的NIS映射表项名称。例如:passwd.byuid。* 表示映射表中任何的字段都可用;
 security :授权访问类型
   none :允许访问,不加强安全性;
   port :  允许特权端口访问;只接收源端口小于1024的连接;
   deny : 禁止访问;

如本实验中,我们应该在主配置文档尾配置如下项:
127.0.0.0/255.255.255.0   : * : * : none
192.168.0.0/255.255.255.0 : * : * : none
*                         : * : * : deny
4、编辑 /etc/yp.conf 文档

    NIS服务器同时也是他们自己的NIS客户端,所以您需要编辑NIS客户端配置文档/etc/yp.conf,将其记录域的NIS服务器同时也是主机。
# vi /etc/yp.conf
添加:
ypserver 127.0.0.1

5、启动rpc、ypserv、yppasswdd等进程

# service portmap start
   Starting portmap:                                          [  OK  ]
# rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32768  status
    100024    1   tcp  32768  status

# service ypserv start
   Starting YP server services:                               [  OK  ]
# rpcinfo -u localhost ypserv
   program 100004 version 1 ready and waiting
   program 100004 version 2 ready and waiting
# service yppasswdd start
  Starting YP passwd service:                                [  OK  ]
# rpcinfo -u localhost yppasswdd
   program 100009 version 1 ready and waiting
# rpcinfo -p localhost
   program vers proto   port
    100000    2   tcp     111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp   32768  status
    100024    1   tcp    32768  status
    100004    2   udp    613  ypserv
    100004    1   udp    613  ypserv
    100004    2   tcp     616  ypserv
    100004    1   tcp     616  ypserv
    100009    1   udp    628  yppasswdd
6、初始化NIS域

    接下来使用 ypinit 命令去创立域maps文档
# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers.  server.mshome.net 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 .
        next host to add:  server.mshome.net
        next host to add:   
The current list of NIS servers looks like this:
server
Is this correct?  [y/n: y]  y
We need a few minutes to build the databases...
Building /var/yp/nisname/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/nisname’
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/nisname’
server has been set up as a NIS master server.
Now you can run ypinit -s server on all slave server.

7、配置/var/yp/securenets,配置安全访问,添加如下内容(您能够根据自己的网络而作相应的修改):
host 127.0.0.1
255.255.255.0 192.168.0.0

说明:此文档用来定义客户端的对NIS服务器的访问权限,他使用netmask/network来定义,实际使用中需要将其间的’/’符号换为空格;同时,假如仅用来定义某个主机的访问,需要将掩码换为’host’指令。

8、启动客户端进程,并测试NIS服务器

# service ypbind start
Binding to the NIS domain:                                 [  OK  ]
Listening for an NIS domain server..
[root@server ~]# yptest
Test 1: domainname
Configured domainname is "nisname"
Test 2: ypbind
Used NIS server: 192.168.0.1
………………
………………

# 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"

#ypcat passwd
redhat:$1$btyeQR8Z$TR0OkRrcrXYmgxY.MEN2R.:500:501::/home/redhat:/bin/bash
说明:redhat为手动建立的系统帐号

# ypmatch redhat passwd
redhat:$1$btyeQR8Z$TR0OkRrcrXYmgxY.MEN2R.:500:501::/home/redhat:/bin/bash
二、客户端的设定
NIS客户端工具ypbind可以通过两种方式获知其域内的服务器是谁:
一是在NIS域内广播;
二是通过/etc/yp.conf读取本域内NIS服务器的位置;

1、设定NIS 域名
#nisdomainname nisname
#vi /etc/sysconfig/network
添加:
NISDOMAIN=nisname
#vi /etc/rc.local
添加:
/sbin/nisdomainname nisname

2、查看是否已安装相应的rpm包ypbind和yptools,RHEL4默认已安装
# rpm -qa |grep ^yp
ypbind-1.17.2-3
yp-tools-2.8-7
3、配置主配置文档/etc/yp.conf
#vi /etc/yp.conf
添加如下行:
domain benet server 192.168.0.1
其语法格式为:
domain NISDOMAIN server HOSTNAME
其中NISDOMAIN为您的NIS 域名,HOSTNAME为您的NIS服务器名字,推荐使用IP;或您也能够配置/etc/hosts文档,使用客户端能解析NIS Server的主机名称,此处则能够写作服务器的主机名;

4、配置/etc/nsswitch.conf文档

找到如下项:
passwd:     files
shadow:     files
group:      files
#hosts:     db files ldap nis dns
hosts:      files dns

将其修改为:
passwd:     files nis
shadow:     files nis
group:      files nis
#hosts:     db files ldap nis dns
hosts:      files nis dns

5、查看客户端portmap进程的启动状况,确定无误后启动其ypbind进程:

# service portmap status
portmap (pid 1774) is running...

# service ypbind start
Shutting down NIS services:                                [  OK  ]
Binding to the NIS domain:                                 [  OK  ]
Listening for an NIS domain server.

将ypbind配置为开机自动启动
#chkconfig --level 2345 ypbind on

6、测试客户端的连接

# ypcat passwd
redhat:$1$btyeQR8Z$TR0OkRrcrXYmgxY.MEN2R.:500:501::/home/redhat:/bin/bash

# ypmatch redhat passwd
redhat:$1$btyeQR8Z$TR0OkRrcrXYmgxY.MEN2R.:500:501::/home/redhat:/bin/bash

# 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"

# ypcat hosts
192.168.0.16            server
127.0.0.1               localhost.localdomain localhost

7、配置客户端在启动时登录到NIS域

# vi /etc/sysconfig/authconfig
找到如下行:
USENIS=no
修改为:
USENIS=yes

8、在服务器添加测试用户
#userdd nisuser
#passwd nisuer
并使用如下命令重建maps数据库,其使用方法见服务端设定部分
# /usr/lib/yp/ypinit -m
三、重新启动客户端来测试结果

1、客户端登录:
# ssh -l nisuser 192.168.0.123
[[email protected]’s] [email protected]’s[/email]
password:
Last login: Wed Jul 11 17:59:14 2007 from server
Could not chdir to home directory /home/nisuser: No such file or directory
-bash-3.00$

2、在服务端输出/home目录,以使得客户端漫游配置文档:

# vi /etc/exports
/home           192.168.0.0/24(rw,no_root_squash,async)

启动nfs服务:
# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]

配置其开机自动启动
# chkconfig --level 2345 nfs on

3、客户端的设定

以root用户登录客户端,挂载服务端的/home目录至本机的/home目录,而后测试使用nisuser用户登录
# ssh -l nisuser 192.168.0.123
[[email protected]’s] [email protected]’s[/email]
password:
[nisuser@client ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .emacs  .gtkrc  .kde
[nisuser@client ~]$ ls /home
lost+found  nisuser  redhat

注:应该以root用户身份编辑/etc/fstab文档,使其开机能自动挂载
192.168.0.1:/home      /home                   ext3    defaults        0 0

4、在客户端使用yppasswd命令修改个人密码

[nisuser@client ~]$ yppasswd
Changing NIS account information for nisuser on server.
Please enter old password:         
The NIS password has been changed on server.   

四、添加一台从服务器

1、编辑/etc/hosts文档,添加如下两行(非必要步骤)
192.168.0.1  server
192.168.0.2  Linux

2、参照主服务器设定的第二步,安装ypserv包

3、编辑主配置文档/etc/ypserv.conf,添加如下行:

127.0.0.0/255.255.255.0   : * : * : none
192.168.0.0/255.255.255.0 : * : * : none
*                         : * : * : deny

4、编辑 主服务器上的/var/lib/yp/Makefile文档,使其能在更改maps后主动将更改push至从服务器

#vi /var/yp/Makefile
找到如下行:
NOPUSH=true
更改为:
NOPUSH=false

5、编辑 主服务器上的/var/yp/server文档,指明服务器将maps能够push到的目标从服务器

#vi /var/yp/server
添加如下行:
192.168.0.2 (注:此处最好使用从服务器名称,前提是此从服务器名能被主服务器解析,您能够通过编辑主服务器的/etc/hosts文档实现)

6、开启 主服务器的资料传送进程

#service ypxfrd start

7、启动从服务器的portmap、ypserv和yppasswdd进程

#service portmap start
#service ypserv start
#service yppasswdd start

8、从主服务器获得maps资料

#/usr/lib/yp/ypinit -s 192.168.0.1  (也能够指定主服务器的名称,前提是您的从服务器能够解析些名称)
We will need a few minutes to copy the data from server.
Transferring rpc.bynumber...
Trying ypxfrd ... success
Transferring protocols.bynumber...
Trying ypxfrd ... success
Transferring hosts.byaddr...
Trying ypxfrd ... success
Transferring ypservers...
Trying ypxfrd ... success
Transferring hosts.byname...
Trying ypxfrd ... success
……………………………………
……………………………………

你可能感兴趣的:(服务器,RHEL,NIS)