NIS服务器的搭建

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 结合实现这个功能。在以后我会做下这个实验。

你可能感兴趣的:(职场,休闲,NIS服务器)