linux下用NIS配置域服务器

linux 下用NIS 配置域服务器NIS 概述:NIS ,是Network Information Services 的简写,意为网络信息服务 ;其最初是由Sun Microsystems 组织开发

linux 下用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.16 NIS主服务器

client 192.168.0.128 NIS客户端

一、服务端的设定

1、设定NIS 域名

#nisdomainname benet

#vi /etc/sysconfig/network

添加:

NISDOMAIN=benet

#vi /etc/rc.local

添加:

/sbin/nisdomainname benet

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/benet/ypservers...

Running /var/yp/Makefile...

gmake[1]: Entering directory `/var/yp/benet'

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/benet'

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

Test 2: ypbind

Used NIS server: 192.168.0.16

………………

………………

,

# 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

二、客户端的设定

1、设定NIS 域名

#nisdomainname benet

#vi /etc/sysconfig/network

添加:

NISDOMAIN=benet

#vi /etc/rc.local

添加:

/sbin/nisdomainname benet

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.16

其语法格式为:

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.128

nisuser@192.168.0.128's 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.128

nisuser@192.168.0.128's password:

[nisuser@client ~]$ ls -a

. .. .bash_logout .bash_profile .bashrc .emacs .gtkrc .kde

[nisuser@client ~]$ ls /home

lost found nisuser redhat

编辑/etc/fstab文件,使其开机能自动挂载

192.168.0.16:/home /home ext3 defaults 0 0

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

[nisuser@client ~]$ yppasswd

Changing NIS account information for nisuser on server.

Please enter old password: <----此处要输入旧密码

Changing NIS password for nisuser on server.

Please enter new password: <----新密码

Please retype new password: <----确认新密码

The NIS password has been changed on server. <----修改的确认信息

标签: