在RHFC3 下配置NIS服务器
* 本文的目的是配置一个NIS服务器,以供自己学习研究使用
* 硬件环境:两台PC,RH FC3,
* 192.168.1.21 是DNS服务器,hostname 是atslxt001,同时也是NIS slave server
* 192.168.1.23是NIS master server,hostname 是atslxt003
* 时间:2005年8月15日星期一
* 作者:kilvon
* 版本:3.0
* 修改历史:
* 1. 增加了autofs – 19/Aug/05
* 2. 增加了如何配置NIS slave server – 14/Sep/05
* 3. 增加了trouble shooting – 22/Sep/05
1. NIS (Network Information Service)
后台进程:ypserv, ypbind, yppasswdd
使用端口:由portmap统一分配
所需RPM包:ypserv, ypbind, yp-tools
相关RPM包:portmap
服务器端配置文件:/etc/ypserv.conf, /var/yp/*
2. 启动/停止进程
#service ypbind start/stop //yp客户端
#service ypserv start/stop //yp服务器端
3. yp服务器端的配置如下(本文假设atslxt003是NIS服务器):
Ø 定义NIS domain name:tcs.nis
Ø 启动ypserv daemon:#service ypserv start
Ø 在/var/yp/Makefile中,设置NIS Server选项并指定用于管理使用的配置文件
Ø 用ypinit来创建NIS版本的配置文件
4.定义NIS domain
首先需要定义的就是这个NIS domain, 文件是/etc/sysconfig/network
NISDOMAIN=tcs.nis
在第一次配置的时候,如果不想重启系统,可以使用这个命令:
#domainname tcs.nis
5.配置/var/yp/Makefile文件
如果没有slave NIS server的话,NOPUSH选项应为:
NOPUSH=true
最小的User ID 和 Group ID都设置为500:
MINUID=500
MINGID=500
合并shadow passwords和real passwords
为了让其他系统可以使用NIS来鉴权,必须允许NIS传送encrypted password。如果server使用shadow password的话,NIS会自动将/etc/shadow文件中加密的域并入/etc/passwd,而后者是在网络中共享的NIS文件。
MERGE_PASSWD=true
NIS将在下面的目录中寻找配置文件,缺省情况下是/etc
YPSRCDIR = /etc
YPPWDDIR = /etc
指定了需要在网络中共享的文件,注意只有第一行才共享了,其余的都被注释起来了
all: passwd group hosts rpc services netid protocols mail /
# netgrp shadow publickey networks ethers bootparams printcap /
# amd.home auto.master auto.home auto.local passwd.adjunct /
# timezone locale netmasks
6.创建NIS database
然后使用下列命令来创建数据库maps:
#ypinit –m
这个-m选项是指定将本机设置为NIS master server,系统会提示输入slave server, 没有的话输入CTRL+D。设置好以后ypinit会自动调用make来创建database maps。
在使用这个命令时一定要先启动ypserv并设定好domainname.
7.Rebuild map
如果更新过那些共享之用的文件,每次更新后都需要运行make。比如,向/etc/passwd中新加了一个用户。
#cd /var/yp; make
8.配置NIS client
Ø 编辑/etc/yp.conf
该文件指定了client-side daemon ypbind如何启动和寻找NIS server的参数。Client寻找server有两种方式:或者使用broadcast或者指定server的host name. 如果是需要在不同的subnets间切换那么使用broadcast方式,但是每个subnet必须都有NIS server存在。
设置广播方式:
domain tcs.nis broadcast
设置server hostname方式:
domain tcs.nis server atslxt003
如果两种方式都设置了的话,系统先使用server hostname方式,找不到指定的NIS server 的话才使用broadcast方式。
设置完后
#service portmap restart
#service ypbind restart
也可以使用authconfig来配置,其实就是上面的操作。
Ø 设置启动文件
#service ypbind start/stop OR
#/etc/init.d/ypbind start/stop
Ø 编辑/etc/nsswitch.conf
nsswitch.conf的作用就是告诉系统按照何种顺序来搜索信息。文件的格式是:
filename servicename1 servicename2
比如,在clients上可以这样设置:
passwd: files nis
这就意味着系统首先搜索/etc/passwd文件,如果没有找到就搜索NIS。
9.如何确定在当前的subnet上有NIS server?
可以通过ping广播地址的方式,如果回应的server中有NIS server那么就可以确认。
#ping –b 192.168.1.0
同时注意在/etc/hosts文件中必须有该atslxt003 server的地址,应为启动NIS的时候,可能DNS并没有启动,所以就没有办法访问NIS server上的数据文件。
10.如何判断NIS服务可用?
在客户端上运行:
#/usr/bin/ypcat passwd
11.检查某个rpc服务的port
#rpcinfo –p 192.168.1.23
12.使用autofs
#service autofs status/start/stop
主配置文件是/etc/auto.master,里面设定了当系统访问某个文件系统或者目录时,应该咨询哪个配置文件,比如:
/misc /etc/auto.misc
/home /etc/auto.home
然后针对每个文件配置(/etc/auto.misc):
kernel -ro,soft,intr ftp.kernel.org:/pub/linux
cd -fstype=iso9660,ro :/dev/cdrom
zip -fstype=auto :/dev/hdd4
floppy -fstype=vfat :/dev/fd0
第一个栏位是挂载点。中间栏位是选项;你可以在 mount 的man中找到相关的信息。最后一个栏位指出文档系统的来源。写著 "kernel" 的那一行表示用 NFS 来挂载文档系统。其他行的冒号表示这是本机的装置。
可以使用kill –SIGUSR1 来强行关闭。
13.设置NIS slave server的话,需要注意以下几点:
Ø NIS maps是在NIS master server上创建的,然后从master server传送到slave server上;修改也必须在master server上进行,master会负责push到client server上;
Ø NIS slave server也同时必须是NIS client;
Ø NIS master server必须先于client server启动;
这里假设atslxt001 是NIS slave server, atslxt003 是NIS master server:
1) 首先必须保证host可以解析NIS master 和slave的ip地址;在双方的/etc/hosts中都分别加入记录先~;
2) 把NIS slave server先配置为NIS client,略;
3) 在atslxt003和atslxt001上分别启动NIS map transfer daemon:
# service ypxfrd start
# chkconfig –level 35 ypxfrd on
4) 在atslxt001上检查一下是否可以访问atslxt003, -m是master server的意思;
# ypwhich -m
5) 在NIS slave (atslxt001)上运行一下命令,这里atslxt003是NIS master
# /usr/lib/yp/ypinit -s atslxt003
//这一步有错的话,可能是glibc的问题,我就遇到过,报错消息是pointer错误什么的,于是去升级到最新版的就可以了,目前的最新版本是:glibc-2.3.5-10.3
6) 在slave 和master上都加入纪录到/etc/yp.conf中
domain tcs.nis server atslxt003
domain tcs.nis server atslxt001
7) 如果需要更新map,在NIS master 上,把新的slave server的名称加入 /var/yp/ypservers中,并且更新maps
# cd /var/yp
# make
附录1:
Ø NIS使用maps文件保存数据库信息,其中使用了key-value pairs。比如,一个用户的login name与相应的加密口令就是一个key-value pair。Maps存储在nis server上,客户端通过RPC call来调用信息。一般的,maps是用DBM格式保存的。
比如,master file是/etc/hosts,那么maps就是hosts.byname,hosts.byaddr。
ypcat和ypmatch会使用nicknames,用来检查NIS的配置。用以下命令来显示所有nicknames:
# ypcat –x
注意maps只在NIS master上可以创建,然后会被分发到所有的slaves上。
Dynamic binding:ypbind通过广播的方式来探测yp server,最先回应的会被作为最快的yp server而在接下来的NIS query中使用。
Ø 如果出现以下错误
Ypclient ypserv[28362]: refused connect from 192.168.1.21:809 to procedure ypproc_match (tcs.nis,hosts.byname;-4)
那么需要修改/etc/nsswitch.conf里的纪录如下所示:
passwd: files nis
shadow: files
group: files nis
hosts: files nis dns
注意shadow后面不能有nis。
Ø 配置好后可以通过如下方法检验
在nis server上加入一个账号:
#useradd nisuser1
#passwd nisusers1
在nis client上:
#ypmatch nisuser1 passwd //or next command
#getent passwd nisuser1
Ø ypxfr出错有个原因是glibc的版本问题,前面已有叙述;