NIS服务器的搭建及配置详解

服务器 struggling 1552次浏览 0个评论

NIS是Network Information Services (NIS server)的缩写,是为了管理一个局域网中的用户账号 ,以方便用户在不同的主机上登录时只需要一个账号即可,它将用户的账号保存在一个主机上,用户登录时只需向其发送请求确认账号是否正确。

NIS的工作流程:
NIS与NFS使用的协议相同都是基于远程过程调用(rpc)的,NIS服务器也有主从之分,主要是为了确保负载均衡及作为备用,一般在大型环境下才会将设slave服务器,所以我们现在不考虑它。
NIS的大致工作如下:
1,先将本身账号密码相关的文件制作成数据库。
2,NIS会制动告知slave来更新数据库文件,若账号有变动时,则需重新制作数据库文件。
3,当用户登录时,先查找本机的账号密码文件,如果找不到,则向NIS服务器请求,所以,用户尽量将自己本机的用户密码文件删除掉,以方便NIS服务器的管理。

NIS服务器所能管理的密码文件主要有以下这些:

服务器端文件名 档案内容
/etc/passwd 提供用户账号、UID、GID、家目录所在、Shell 等等
/etc/group 提供群组数据以及 GID 的对应,还有该群组的加入人员
/etc/hosts 主机名与 IP 的对应,常用于 private IP 的主机名对应
/etc/services 每一种服务 (daemons) 所对应的埠口 (port number)
/etc/protocols 基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等
/etc/rpc 每种 RPC 服务器所对应的程序号码
/var/yp/ypservers NIS 服务器所提供的数据库

 

下面开始介绍NIS服务器的搭建:

一,准备工作

两台主机,一个作为服务器端,一个客户端。

服务器端
所需要的软件有:

<code>
yp-tools :提供 NIS 相关的查寻指令功能。
ypbind :提供 NIS Client 端的设定软件。
ypserv :提供 NIS Server 端的设定软件。
rpcbind :就是 RPC ,系统一般会安装上。
IP:192.168.2.101,主机名为www.feiyu1.com
domain:feiyu
整个内部的信任网域为 192.168.2.0/24
</code>

客户端
所需软件:

<code>
ypbind
yp-tools
IP:192.168.2.119,主机名为tian.feiyu1.com</code>

二,NIS服务器端的设定与启动

1. 先设定 NIS 的域名 (NIS domain name)

<code>
[root@www ~]# vim /etc/sysconfig/network #加入以下两行数据
NISDOMAIN=feiyu   --->设定 NIS 领域名
YPSERV_ARGS="-P 1011"      ----->端口是像rpc注册的,设定 NIS 每次都启动在固定的端口,以方便iptables管理 
</code>

2. 设置配置文件 /etc/ypserv.conf

<code>
 [root@www ~]# grep -v '#' /etc/ypserv.conf
 dns: no 
#是否启用dns,局域网中不需要
 files: 30 
#最大数据库文件限制为30 
xfr_check_port: yes 
#开启传送数据,为了配合slave的同步 
# 底下则是设定限制客户端或 slave server 查询的权限,利用冒号隔成四部分: 
# [主机名/IP] : [NIS域名] : [可用数据库名称] : [安全限制] 
* : * : shadow.byname : port 
* : * : passwd.adjunct.byname : port
</code>

一般来说可以不用设置.

3. 设定主机名与 IP 的对应 (/etc/hosts)

<code>
 [root@www ~]# vim /etc/hosts 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.2.101 www.feiyu1.com
 192.168.2.119 tian.feiyu1.com
</code>

4,启动服务

<code>
 [root@www ~]# yum install -y yp-tools ypbind ypserv rpcbind #安装所需的软件
 [root@www lib]# rpm -ql ypserv #查看所生成的文件 
/etc/rc.d/init.d/yppasswdd ---->
/etc/rc.d/init.d/ypserv ---->所需的服务
/etc/rc.d/init.d/ypxfrd
/etc/sysconfig/yppasswdd ---->配置文件
/etc/ypserv.conf ----->主配置文件
/usr/include/rpcsvc/ypxfrd.x
/usr/lib/yp
/usr/lib/yp/create_printcap
/usr/lib/yp/makedbm
/usr/lib/yp/match_printcap
/usr/lib/yp/mknetid
/usr/lib/yp/pwupdate
/usr/lib/yp/revnetgroup
/usr/lib/yp/yphelper
/usr/lib/yp/ypinit
/usr/lib/yp/ypxfr
/usr/lib/yp/ypxfr_1perday
/usr/lib/yp/ypxfr_1perhour
/usr/lib/yp/ypxfr_2perday
/usr/sbin/rpc.yppasswdd
/usr/sbin/rpc.ypxfrd
/usr/sbin/yppush
/usr/sbin/ypserv
/usr/share/doc/ypserv-2.19
/usr/share/doc/ypserv-2.19/AUTHORS
/usr/share/doc/ypserv-2.19/COPYING
/usr/share/doc/ypserv-2.19/ChangeLog
/usr/share/doc/ypserv-2.19/INSTALL
/usr/share/doc/ypserv-2.19/NEWS
/usr/share/doc/ypserv-2.19/README
/usr/share/doc/ypserv-2.19/README.etc
/usr/share/doc/ypserv-2.19/TODO
/usr/share/doc/ypserv-2.19/locale
/usr/share/doc/ypserv-2.19/netgroup
/usr/share/doc/ypserv-2.19/netmasks
/usr/share/doc/ypserv-2.19/securenets
/usr/share/doc/ypserv-2.19/timezone
/usr/share/doc/ypserv-2.19/ypserv.conf
/usr/share/man/man5/netgroup.5.gz
/usr/share/man/man5/ypserv.conf.5.gz
/usr/share/man/man8/makedbm.8.gz
/usr/share/man/man8/mknetid.8.gz
/usr/share/man/man8/pwupdate.8.gz
/usr/share/man/man8/revnetgroup.8.gz
/usr/share/man/man8/rpc.yppasswdd.8.gz
/usr/share/man/man8/rpc.ypxfrd.8.gz
/usr/share/man/man8/yphelper.8.gz
/usr/share/man/man8/ypinit.8.gz
/usr/share/man/man8/yppasswdd.8.gz
/usr/share/man/man8/yppush.8.gz
/usr/share/man/man8/ypserv.8.gz
/usr/share/man/man8/ypxfr.8.gz
/usr/share/man/man8/ypxfrd.8.gz
/var/yp
/var/yp/Makefile
[root@www lib]# rpm -ql yp-tools  #yp-tools软件包
/usr/bin/ypcat ---->下面都为一些命令
/usr/bin/ypchfn
/usr/bin/ypchsh
/usr/bin/ypmatch
/usr/bin/yppasswd
/usr/bin/ypwhich
/usr/sbin/yppoll
/usr/sbin/ypserv_test
/usr/sbin/ypset
/usr/sbin/yptest
/usr/share/doc/yp-tools-2.9
/usr/share/doc/yp-tools-2.9/AUTHORS
/usr/share/doc/yp-tools-2.9/COPYING
/usr/share/doc/yp-tools-2.9/ChangeLog
/usr/share/doc/yp-tools-2.9/NEWS
/usr/share/doc/yp-tools-2.9/README
/usr/share/doc/yp-tools-2.9/THANKS
/usr/share/doc/yp-tools-2.9/TODO
/usr/share/doc/yp-tools-2.9/nsswitch.conf
/usr/share/locale/de/LC_MESSAGES/yp-tools.mo
/usr/share/man/man1/ypcat.1.gz
/usr/share/man/man1/ypchfn.1.gz
/usr/share/man/man1/ypchsh.1.gz
/usr/share/man/man1/ypmatch.1.gz
/usr/share/man/man1/yppasswd.1.gz
/usr/share/man/man1/ypwhich.1.gz
/usr/share/man/man5/nicknames.5.gz
/usr/share/man/man8/yppoll.8.gz
/usr/share/man/man8/ypset.8.gz
/usr/share/man/man8/yptest.8.gz
/var/yp
/var/yp/nicknames
[root@www ~]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012"  --->找到这个设定值,修改一下内容成这样!
 [root@www ~]# /etc/init.d/ypserv start ----->使用此句可能会出现以下错误
Setting NIS domain name feiyu: [ OK ]
Starting YP server services: /usr/sbin/ypserv: invalid option -- 'P'
usage: ypserv [-d [path]] [-p port] [-i interface]
ypserv --version
[FAILED]
</code>

根据提示应该这么用:

<code>
[root@www ~]# ypserv -p 1011 start
[root@www ~]# /etc/init.d/yppasswdd start
[root@www ~]# chkconfig ypserv on
[root@www ~]# chkconfig yppasswdd on</code>


主要的 NIS 服务是 ypserv ,yppasswdd提供 NIS 客户端的密码修改功能, 所以还是得要启动 yppasswdd 这个服务。

<code>
[root@www lib]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100004 2 udp 1011 ypserv
100004 1 udp 1011 ypserv
100004 2 tcp 1011 ypserv
100004 1 tcp 1011 ypserv
100009 1 udp 1012 yppasswdd
</code>

5. 处理账号并建立数据库

<code>
[root@www ~]# useradd -u 1001 feiyu1
[root@www ~]# useradd -u 1002 feiyu2
[root@www ~]# useradd -u 1003 feiyu3
[root@www ~]# echo 123 | passwd --stdin feiyu1

[root@www lib]# /usr/lib/yp/ypinit -m #将文件制作成数据库,64 为的系统使用/usr/lib64/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers. www.feiyu1.com 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: www.feiyu1.com
next host to add: <==这个地方按下 [crtl]-d
The current list of NIS servers looks like this:

www.feiyu1.com

Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/feiyu/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/feiyu'
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/feiyu'

www.feiyu1.com has been set up as a NIS master server.

Now you can run ypinit -s www.feiyu1.com on all slave server.
</code>

三,NIS Client 端的设定

1.下载所需的软件

<code>
[root@www ~]# yum install -y yp-tools ypbind
</code>

一些配置文件及命令的说明;

<code>
/etc/sysconfig/network:就是 NIS 的领域名嘛!
/etc/hosts:至少需要有各个 NIS 服务器的 IP 与主机名对应;
/etc/yp.conf:这个则是 ypbind 的主要配置文件,里面主要设定 NIS 服务器所在
/etc/sysconfig/authconfig:规范账号登入时的允许认证机制;
/etc/pam.d/system-auth :这个最容易忘记!因为账号通常由 PAM 模块所管理, 所以你必须要在 PAM 模块内加入 NIS 的支持才行!
/etc/nsswitch.conf :这个档案可以规范账号密码与相关信息的查询顺序,默认是先找 /etc/passwd 再找 NIS 数据库;

/usr/bin/yppasswd :更改你在 NIS database (NIS Server 所制作的数据库) 的密码
/usr/bin/ypchsh :同上,但是是更改 shell
/usr/bin/ypchfn :同上,但是是更改一些用户的讯息!
</code>

2.客户端的一些设定
主要为NIS域的设定及一些认证选项,使用如下命令就能简单的设定。

<code>
[root@www ~]# setup

选择 Authentication configuration   ----->  [ * ] Use NIS  ----> next   ----> 设置Domain: feiyu   Server:192.168.2.101 ---->ok   -------> quit

 

 
</code>

设置完毕后,如果系统很快的就跳回第一个画面, 代表你的设定理论上是没有问题的。否则,你就需要再检查下设定的值有没有问题。

设置完后,它会修改以下几个而配置文件,可以自己看看:

<code>
[root@www ~]# cat /etc/sysconfig/network
[root@www ~]# cat /etc/yp.conf
[root@clientlinux ~]# vim /etc/nsswitch.conf
</code>

3,使用客户端命令yptest, ypwhich, ypcat进行进行检验,怎么检验呢?一个很简单的办法就是检查本机能否使用客户端的用户

<code>
[root@localhost ~]# id feiyu1
uid=1001(feiyu1) gid=1001(feiyu1) groups=1001(feiyu1)
[root@localhost ~]# id feiyu2
uid=1002(feiyu2) gid=1002(feiyu2) groups=1002(feiyu2)
[root@localhost ~]# id feiyu3
uid=1003(feiyu3) gid=1003(feiyu3) groups=1003(feiyu3) ------->以上用户在客户端都存在
</code>
<code>
[root@localhost ~]# yptest ------>使用 yptest 检验数据库
Test 1: domainname
Configured domainname is "feiyu"

Test 2: ypbind
Used NIS server: www.feiyu1.com

Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)

Test 4: yp_first
user user:$1$ATBAGnI8$dCKbB4kM2Sb3AkqqSqJNY/:501:501::/home/user:/bin/bash

Test 5: yp_next
feiyu3 feiyu3:$1$vAbrhKiC$TBzwAA2ZAIqNgr35WQXF2/:1003:1003::/home/feiyu3:/bin/bash
feiyu2 feiyu2:$1$oBnEJGKH$QnPweGSHgEBDp8To1LKT5/:1002:1002::/home/feiyu2:/bin/bash
feiyu1 feiyu1:$1$P5ETH99s$mCE/4YVEYS7c/5oy17xIM0:1001:1001::/home/feiyu1:/bin/bash
centos centos:$1$aFk7O//F$HEa19AWyfeWTcHZA8CXdL.:500:500:centos:/home/centos:/bin/bash

Test 6: yp_master
www.feiyu1.com

Test 7: yp_order
1430912603

Test 8: yp_maplist
mail.aliases
rpc.byname
hosts.byname
protocols.bynumber
ypservers
group.byname
group.bygid
services.byname
netid.byname
services.byservicename
passwd.byname
protocols.byname
hosts.byaddr
passwd.byuid
rpc.bynumber

Test 9: yp_all
user user:$1$ATBAGnI8$dCKbB4kM2Sb3AkqqSqJNY/:501:501::/home/user:/bin/bash
feiyu3 feiyu3:$1$vAbrhKiC$TBzwAA2ZAIqNgr35WQXF2/:1003:1003::/home/feiyu3:/bin/bash
feiyu2 feiyu2:$1$oBnEJGKH$QnPweGSHgEBDp8To1LKT5/:1002:1002::/home/feiyu2:/bin/bash
feiyu1 feiyu1:$1$P5ETH99s$mCE/4YVEYS7c/5oy17xIM0:1001:1001::/home/feiyu1:/bin/bash
centos centos:$1$aFk7O//F$HEa19AWyfeWTcHZA8CXdL.:500:500:centos:/home/centos:/bin/bash
1 tests failed ---->只有一个测试失败,这个不重要
</code>
<code>
[root@localhost ~]# ypwhich -x ---->ypwhich 检验数据库数量
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"
</code>
<code>
[root@localhost yp]# ypcat passwd.byname ----->利用 ypcat 读取数据库内容
user:$1$ATBAGnI8$dCKbB4kM2Sb3AkqqSqJNY/:501:501::/home/user:/bin/bash
feiyu3:$1$vAbrhKiC$TBzwAA2ZAIqNgr35WQXF2/:1003:1003::/home/feiyu3:/bin/bash
feiyu2:$1$oBnEJGKH$QnPweGSHgEBDp8To1LKT5/:1002:1002::/home/feiyu2:/bin/bash
feiyu1:$1$P5ETH99s$mCE/4YVEYS7c/5oy17xIM0:1001:1001::/home/feiyu1:/bin/bash
centos:$1$aFk7O//F$HEa19AWyfeWTcHZA8CXdL.:500:500:centos:/home/centos:/bin/bash
</code>

此命令也可以在服务器端用,但要指定服务器:

<code>
[root@www feiyu]# ypcat -h 192.168.2.101 passwd.byname
</code>

也可以使用以下命令在客户端进行修改:

<code>
yppasswd :与 passwd 指令相同功能;
ypchfn :与 chfn 相同功能;
ypchsh :与 chsh 相同功能。
</code>

至此,NIS服务器就搭建完成了,它与NFS服务器搭配还有更多的用处,后面会继续更新。


DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址