CentOS 6下配置NIS服务

介绍:
Linux下的NIS服务器类似于Windows下的域控制器,用于Linux下的用户信息集中管理。
软件安装:
服务器端:

[root@localhost ~]# yum install -y ypserv

客户端:

[root@localhost ~]# yum install -y ypbind

配置文件介绍:
服务器端:

/etc/ypserv.conf                  //服务器端主配置文件

客户端:

/etc/yp.conf                      //客户端主配置文

务器端配置:
NIS通过域名来分辨不同的账号密码数据,因此需先指定NIS域名。
方法很简单,如下。

[root@localhost ~]# vim /etc/sysconfig/network

添加一行

NISDOMAIN=nis.ibadboy.net

最终效果如下。

这里啰嗦一下:看到网上很多文章都说要设置主机名,还要给主机名添加到/etc/hosts文件中,做主机名和IP的对应。
不过,我使用CentOS 6.5版本亲测,不另外设置主机名,不编辑/etc/hosts文件,NIS服务器也一样能正常工作。但前提是,在/etc/ypserv.conf这个文件中是以IP地址来限制客户机而不是使用主机名,如果使用主机名则必须添加DNS解析或编辑/etc/hosts文件,关于ypserv.conf文件的配置下面马上会介绍到。
另外,为了方便配置防火墙规则,我们也可以指定让NIS服务器每次都启动在固定端口,否则NIS会动态使用端口。

[root@localhost ~]# vim /etc/sysconfig/network

添加一行。

YPSERV_ARGS="-p 1011"              //使NIS服务器每次启动都使用1011端口

添加后文件内容如下:

编辑NIS服务器端主配置文件。

[root@localhost ~]# vim /etc/ypserv.conf

先来简单看下配置文件的内容再来说通常情况下如何配置。
转到14行和17行可以看到如下两个被红框框起来的选项(因软件版本号差异,行号可能不一样,可在VIM中搜索关键字来查找),其中“dns”选项是定义是否使用DNS,一般情况下保持默认即可(我搞不懂为啥会有这个选项,感觉很白痴)。“files”选项是定义载入到内存中的数据库个数(我不清楚这里的数据库是指的什么,这一段摘录自《鸟哥的Linux私房菜》),如果账号多,可以调大。

转到第25行左右,这里定义是否将Master/Slave的同步更新的数据库对比放置于小于1024的端口中,通常情况下保持默认即可。

接下来到重点了:配置允许访问NIS服务器的主机及主机的权限,这也是通常情况下服务器端主配置文件中唯一需要修改的部分。
参照如下格式配置:

[主机名/IP]:[NIS域名]:[可用数据库名称]:[安全策略]          //可使用通配符
[主机名/IP] :直接填入允许访问的主机名或使用网络地址/掩码的形式,如 192.168.1.0/255.255.255.0。 
[NIS域名] :例如本案例中的“nis.ibadboy.net”。
[可用数据库名称]:就是由 NIS 制作出来的数据库名称。
[安全限制] :有三种,没有限制(none)、仅能使用小于1024的端口(port)及拒绝(deny)。

例如:

192.168.1.0/255.255.255.0     :     nis.ibadboy.net      :     *      :       none

通常情况下,NIS服务器都是应用在局域网,限制可以不用这么严格,使用如下格式也可以。当然,你也可以按照自己的需求来设置。

*      :     *     :     *     :    none

转到第38行左右,可以看到默认已经配置好了两条规则,我们可以在这个基础上稍作修改。

本例改成如下形式:

保存退出后,在保证防火墙和selinux均关闭的情况下启动ypserv(NIS主服务)及yppasswdd(用于支持客户端修改NIS服务器上的用户密码)服务。

[root@localhost ~]# service ypserv start
[root@localhost ~]# service yppasswddd start

再在服务器端添加几个用户信息,一会好在客户端测试。

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

最后,编译生成各种数据库文件来供客户机查询。

[root@localhost ~]# /usr/lib64/yp/ypinit -m

到这一步,按下“Ctrl + D”


这一步输入y或者直接回车。

看到打印出如下字样即是成功。

客户端配置:
设置NIS域名,这里注意,一定要和服务器端是同样的NIS域名,否则客户端将无法绑定服务器端。

[root@localhost ~]# vim /etc/sysconfig/network

本例中,添加“NISDOMAIN=nis.ibadboy.net”

编辑客户端主配置文件。

[root@localhost ~]# vim /etc/yp.conf

在其中添加服务器端信息,格式如下。
domain [NIS域名] server [NIS服务器IP地址]
例如,本例中为:

domain nis.ibadboy.net server 192.168.1.20

添加后,效果如下。

保存并重启NIS客户端。

[root@localhost ~]# service ypbind restart

如下,是成功了。

如果是这种呢,一眼就能看出是失败了,那就要仔细检查下是不是哪一步做错了。

通常情况下,错误一般都是NIS域名不一致导致的,虽然客户端和服务器端的/etc/sysconfig/network中设置的NIS域名是一致的,但要注意的是,这里的NIS域名并非实时生效,因此还需要使用“nisdomainname”命令来分别检查服务器端和客户端当前的NIS域名,若发现有不符合的则使用“nisdomainname 接新NIS域名”来实时修改。
例如:

到这里,虽然客户端绑定服务器端成功了,但我们依然不能在客户端使用NIS服务器中的用户信息,原因是还没修改系统查询用户信息服务的方式。
编辑/etc/nsswitch.conf(服务搜索顺序配置文件)
在几个主要的配置文件的搜索顺序中都加入“nis”。注意,这里把“nis”加到“files”后,是先搜索本地配置文件而后才搜索nis服务器。这就导致,如果本地和nis服务器上存在相同的用户,客户端并不会使用nis服务器上的用户数据。可以通过将“nis”写在“files”前来解决这个问题。
注意最后一行,hosts文件的搜索顺序中加入了nis,这就是为什么我们不写hosts文件,不做dns一样可以正常使用nis服务器的原因。

这样,NIS客户端就算配置完了。
执行yptest命令看是否能列出NIS服务器端的账号信息。
在“Test 9: yp_all”这个测试结果中能看到NIS服务器端的用户信息即算成功。
例如:

客户端的配置,看似貌似很完美,但其实还是有点问题的,那就是需要PAM等认证的服务依然不会查询NIS服务器上的信息,这些配置文件我们手动修改实在是太麻烦了,可以使用“setup”工具来快速设置。
当然,如果没有特殊需求,仅仅需要系统用户身份认证信息使用NIS服务器上的数据那么按照之前那样简单配置以下就可以满足需求了。
若需要vsftpd虚拟用户这种使用PAM做身份认证的服务也使用NIS服务器,则就要使用“setup”工具来设置了,系统中没有安装“setup”工具可以参考此篇文章安装。

CentOS 6安装setup工具包


按照如下步骤走一遍即可,十分简单。之后setup会帮你把所有需要修改的配置文件全部修改一遍,换而言之,如果你使用setup工具来设置客户端,那除了安装ypbind软件包之外,不需再手工编辑任何文件。
注意,这里特殊说明一下,我的setup工具是中文语言的,其中图一的“验证配置”对应的英文版是“authentication configuration”,不要选错了哦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code

CentOS 6下配置NIS服务》有1个想法