NIS
服务器的搭建
一、
NIS
服务器概述
NIS
(网络信息服务)也称
YP(Yellow Pages)
协议,是一个提供目录服务的
RPC(
远程过程调用
)
应用服务。该服务器提供信息查询的工作,如用户账号、密码、
UID
、默认目录、
shell
等。
二、
NIS
软件相关结构
一般
NIS
服务器大都采用
ypserv
和
yptools
这个软件,客户端采用
yp-tools
和
ypbind
等软件进行管理。这个软件的相关结构如下
1.
配置文件方面:
/etc/ypserv.conf:
/etc/host
/etc/netgroup
/var/yp/Makefile
/etc/syconfig/netword
2.
服务器提供的服务分别以
ypserv
、
rpc.ypxfrd
、
yppasswdd
分别提供主服务、主从服务器之间的数据库传输、客户端用户密码修改服务。
3.
数据库有关的命令:
yppush
是主服务器把数据直接传送到从服务器,
ypinit
是主服务器生成数据库文件,
ypxfr
传送数据库命令。
三、
实例设计
实验的环境:虚拟机下
CentOS5
要设计拓扑结构图如下:
通过
NIS
服务,我可以从网管工作台使用一致的账户和口令登录到应用服务器,对服务器进行管理。
1.
服务端设置
1
)设置服务器的域名
设置域名为
junlew
,可以使用两种方法:修改
/etc/sysconfig/network
,在该文件中加入一行
nisdomainname=junlew
;或者使用
nisdomainname junlew
,这个命令是暂时修改,重启后将丢失,因此我们可以把这个命令写入到
/etc/rc.d/rc.local
文件中,让他开机自动执行此命令。
2
)设置配置文件
/etc/ypserv.conf
关于此文件配置的相关说明可以使用
man ypserv.conf
命令进行查看。重要的参数如下:
* : junlew : shadow.byname : port
192.168.1.0
、
255.255.255.0 : * : passwd.adjunct.byname : port
#
主机名称
/
主机
IP
:
NIS
网段名称
:可用数据库名称
:安全限制
可以按照实际需求进行配置。
3
)设计主机名称和信任群组
修改
/etc/hosts
文件添加,用
vi /etc/hosts
:
192.168.1.188 Master.junlew
192.168.1.88 Slave.junlew
192.168.1.106 Client.junlew
另外需要建立一个文件
touch /etc/netgroup
,此文件为信任群组。只需建立就可。若不建立可能会出现问题。
4
)启动服务
/etc/init.d/portmap start #
启动
RPC
服务
/etc/init.d/ypserv start
/etc/init.d/yppasswdd start
5
)建立数据库(
/usr/lib/yp/ypinit -m
)
[root@Master yp]# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. Master.junlew 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 <control D>.
next host to add: Master.junlew
next host to add:
The current list of NIS servers looks like this:
Master.junlew
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/junlew/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/junlew'
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.bygid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byaddr...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating rpc.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating rpc.bynumber...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating services.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating services.byservicename...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netid.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating protocols.bynumber...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating protocols.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating mail.aliases...
failed to send 'clear' to local ypserv: RPC: Program not registeredgmake[1]: Leaving directory `/var/yp/junlew'
Master.junlew has been set up as a NIS master server.
Now you can run ypinit -s Master.junlew on all slave server.
这是在主
NIS
服务进行的
!!
注:当用户账号或者口令发生改变是必须要重新制作数据库,并重启相关的服务,才能生效。
6
)从服务器和数据库同步设置
主从服务器的设置同步
,
修改
/var/yp/Makefile
找到
NOPUSH=true
修改为
NOPUSH=false
,然后在
/var/yp/ypserver
添加一行
Slave.junlew
,此文件将指定数据库将被推送到的从服务器主机名,因此在
/etc/hosts
文件中
ip
和主机名一定要对应。通过以上的设置主服务器一基本配置完成。
从服务器的设置和主服务器的设置步骤基本相同。不用设置第六步,不过在第四步建立数据库是不一样的。他是从主服务器获得数据库文件,不用重新制作数据库文件。使用以下命令获得数据库:
/usr/lib/yp/ypinit �Cs Master.junlew
这是手动获得数据库文件。由于账号信息可能在不变化,这样每次改变账号信息都要进行手动的获得,显得很麻烦。解决方法是:在主服务器启动
ypxfrd
服务,在从服务器里设置计划脚本,定时进行更新。具体的脚本在
/usr/lib/yp
目录下提供了几个软件自带脚本。可以按照自己的要求修改脚本,并把脚本放入计划任务中(修改
/etc/crontab
文件)。最后一点是在从服务器上必须启动
ypbind
服务。负责从服务器无法提供服务。
2.
客户端的设置
所需要的软件:
ypbind
、
yp-tools
、
portmap
1
)设置
nisdomainname
、
/etc/hosts
2
)客户端通过
ypbind
与
NIS
服务器认证。首先启动
ypbind
,然后设置认证,可以通过
authconfig-tui
命令进行设置。
第二种方法,可以修改一下文件:
a.
修改
/etc/nsswitch.conf
中以下几项。
nis
为新增加的。
passwd: files nis
shadow: files nis
group: files nis
hosts: files dns nis
b.
修改
/etc/sysconfig/authconfig
文件
USENIS=no
改为
USENIS=yes
c.
修改
/etc/pam.d/system-auth
文件,这个行后面添加了
nis
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow nis
d.
修改
/etc/yp.conf
文件,在其中加入一条
Domain junlew Server Master.junlew
(分为四部分
Domain NIS
域
Server
主机名称)
修改完成后要重新启动相关的服务。
3.
客户端的检验
使用
yptest
、
ypwhich
、
ypcat
进行检验,关于命令的相关参数,可以用
man
命令查到。
在我做实验的过程中用
yptest
检验的时候发现错误。
Can't communicate with ypbind
,通过检验发现
NIS
客户端的
iptables
处于状态,并阻止与
NIS
的通信。为了方便我用
service iptables stop
关掉防火墙。再次检验通过。
4.
在客户端登陆其他
linux
服务:
[root@Slave ~]# su -l netman
su: warning: cannot change directory to /home/netman: No such file or directory
-bash-3.00$
发现可以成功登陆,到此实验成功完成。
在最后的用
NIS
登陆的用户提示符为什么是
-bash-3.00$
,
那是因为该用户的环境变量没有读出到本地机器,所以我们可以采用之前写
NFS
于
NIS
结合实现这个功能。在以后我会做下这个实验。