NIS服务器详解


1.  NIS 基本概念
在一个大型的网域中,如果有多部Linux主机,而且需要每台主机都设定相同的帐号与密码时,是十分麻烦的。此时,如果能够有一台NIS主控制服务器(master server)来管理该网域中所有主机的帐号密码,当其他的主机有用户登录的需求时,才到这台服务器上请求相关的帐号密码等使用者资料,这样一来,如果想要增加、修改、删除用户的资料,只需要到这台服务器上面处理即可,这样就能够大大降低重复设定用户帐号密码的步骤,便于管理。NIS(Network Information Services) Server就可以实现这样的功能。NIS早期为Sun Yellow Pages 简称YP 黄页的意思。

2.  NIS服务器端组件结构
NIS的组件结构分为配置文件、主要服务以及相关指令。

NIS服务器主要提供信息如下表:
/etc/passwd       提供用户帐号、 UID、 GID、家目录所在、登录shell等信息
/etc/group      提供群组信息以及GID的对应,还有该群组成员等信息
/etc/hosts     提供主机名与IP地址的对应关系信息
/etc/services     提供每一种服务( daemons)所对应的端口( port number)信息
/etc/protocols     基础的TCP/IP封包协议,如TCP, UDP, ICMP等
/etc/netgroup     网络群组的定义与使用
/etc/rpc         RPC服务器信息

NIS服务器端的配置文件如下表所示:
/etc/ypserv.conf   关键配置文件,规范NIS客户端登录权限等
/etc/hosts       在其中配置IP地址与主机名对应关系
/etc/sysconfig/network    指定NIS的域名名称(nisdomainname)
/var/yp/Makefile       账号数据转换为数据库文件。
/etc/netgroup       设定信任主机组

/etc/sysconfig/yppasswdd            设置   如:端口YPPASSWDD_ARGS="-p 1002"


NIS服务器端的主要服务如下表所示:
/usr/sbin/ypserv     NIS服务器提供的主要服务
/usr/sbin/rpc.ypxfrd     用来作为master/slave主机之间传输资料库的服务
/usr/sbin/rpc.yppasswdd     通过此服务,NIS客户端登录的用户可以直接修改在NIS服务器上的密码(跟服务器上的账号密码不一样是可以的,两者没有关联。)
/var/yp/Makefile         与建立资料库有关的配置文件

NIS服务器端的主要指令如下表所示:
/usr/sbin/yppush     master主机将资料库直接送至slave主机的指令
/usr/lib64/yp/ypinit     建立资料库的指令 /usr/lib/yp/ypinit
/usr/lib/yp/ypxfr       传送资料库的指令
/usr/bin/yppasswdd      与NIS客户端有关,主要让用户修改服务器上的密码。


3.NIS客户端组件结构
NIS的组件结构分为配置文件、相关指令。

NIS客户端配置文件如下表所示:
/etc/hosts     主机名与IP地址对应关系
/etc/yp.conf     ypbind的主要配置文件,设定NIS Server
/etc/nsswitch.conf   重要的配置文件,设定帐号密码等信息
/var/yp/Makefile     与建立资料库有关的配置文件的查询顺序

/etc/sysconfig/authconfig:规范帐号登入时的允许认证机制;
 /etc/pam.d/system-auth :这个最容易忘记!因為帐号通常由 PAM 模组所管理, 所以你必须要在 PAM 模组内加入 NIS 的支持才行
NIS客户端的主要指令如下表所示:
/usr/bin/yppasswd   更改客户端登录用户在NIS服务器上的密码
/usr/bin/ypchsh     更改客户端登录用户默认登录shell
/usr/bin/ypchfn     更改客户端登录用户的finger信息


4.NIS服务器端工作流程

NIS Server包括Master和Slave两类服务器:
Nis Master Server:将文件建成数据库,并提供给Slave Server来更新;
Nis Slave Server:以Master Server的数据库作为本身的数据库来源;
流程如下:
1.Nis Master先将帐号密码相关文件制作成数据库文件;
2.Nis Master可以主动告诉Nis Slave来更新;
3.Nis Slave亦可以主动前往Nis Master取得更新;
4.若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。

5 NIS Client 登录查询流程
NIS Client向Master/Slave 请求登陆者的验证数据。
流程如下:
1.NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案;
2.若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询;
3.每个 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』。

6.各个角色应该具备的软件要求
NIS 服务器端需要安装的组件如下:(一般情况下,NIS服务器也要起到客户端的作用,所以客户端软件也要安装)
yp-tools 提供NIS相关的查询指令功能
ypbind NIS Client端的服务进程
ypserv NIS Server端的服务进程
rpcbind 提供RPC服务

NIS 客户端需要安装的组件如下:
yp-tools 提供NIS相关的查询指令功能 。
ypbind    NIS Client端的服务进程,与服务器互相沟通的软件。

7.安装软件

[root@cnetos68 桌面]# yum install yp-tools ypbind ypserv rpcbind -y

[root@cnetos68 桌面]# yum install ypserv -y


已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
解决依赖关系
--> 执行事务检查
---> Package ypserv.x86_64 0:2.19-31.el6 will be 安装
--> 完成依赖关系计算

依赖关系解决

================================================================================
软件包 架构 版本 仓库 大小
================================================================================
正在安装:
ypserv x86_64 2.19-31.el6 c6-media 131 k

事务概要
================================================================================
Install 1 Package(s)

总下载量:131 k
Installed size: 319 k
下载软件包:
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
正在安装 : ypserv-2.19-31.el6.x86_64 1/1
Verifying : ypserv-2.19-31.el6.x86_64 1/1

已安装:
ypserv.x86_64 0:2.19-31.el6

完毕!

8.端口设置

由于 NIS 服务器主要是提供用户登入的信息给客户端主机来查询之用,所以, NIS 服务器所提供的数据当然就需要用到传输与读写比较快速的 "数据库" 文件系统, 而 不是传统的纯文本数据。为了要达到这个目的,所以 NIS 服务器就必须要将前面 提到的那些文件制作成为数据库文件, 然后使用网络协议让客户端主机来查询。(所使用的通讯协议与前一章的 NFS 相同,都使用远程过程调用 (RPC) 端口为111.   再就是NIS的一些ypseerv  yppassswdd  等daemons向RPC清册生成的端口。

[root@cnetos68 桌面]# vim /etc/sysconfig/network
YPSERV_ARGS="-p 1001"        #新增,启动ypserv服务的端口

[root@cnetos68 桌面]# vim /etc/sysconfig/yppasswdd #(实例中会设置到)
YPPASSWDD_ARGS="--port 1002"   #yppasswdd服务的端口

 

[root@cnetos68 桌面]# 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 1001 ypserv
100004 1 udp 1001 ypserv
100004 2 tcp 1001 ypserv
100004 1 tcp 1001 ypserv
100009 1 udp 1002 yppasswdd

9.防火墙设置

iptables  -I INPUT 1 -p tcp --dport 111  -j ACCEPT

iptables  -I INPUT 1 -p upd --dport 111  -j ACCEPT

iptables  -I INPUT 1 -p tcp --dport 1001:1002  -j ACCEPT

iptables  -I INPUT 1 -p upd--dport 1001:1002  -j ACCEPT

 

实例操作:

  • NIS 的域名zzhz

  • NIS server 的 IP 为 192.168.80.150 ,主机名cnetos68

  • NIS client 的 IP 为 192.168.80.100,主机名 localhost.localdomain

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

[root@Server lansgg]# vim /etc/sysconfig/network
NISDOMAIN=lansgg            #新增,NIS域名
YPSERV_ARGS="-p 1001"       #新增,启动ypserv服务的端口

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

[root@Server lansgg]# vim /etc/ypserv.conf
dns: no         # NIS 服务器大多使用于内部局域网络,只要有 /etc/hosts 即可,不用 DNS 啦,我们在这里使用hosts
files: 30       # 预设会有 30 个数据库被读入内存当中
xfr_check_port: yes #与 master/slave 有关,将同步更新的数据库比对所使用的端口,放置于 <1024 内
# 底下则是设定限制客户端或 slave server 查询的权限,利用冒号隔成四部分:
# [主机名/IP] : [NIS域名] : [可用数据库名称] : [安全限制]
# [主机名/IP]   :可以使用 network/netmask 如 192.168.100.0/255.255.255.0
# [NIS域名]   :例如本案例中的 zzhz
# [可用数据库名称]:就是由 NIS 制作出来的数据库名称;
# [安全限制]      :包括没有限制 (none)、仅能使用 <1024 (port) 及拒绝 (deny)
# 一般来说,你可以依照我们的网域来设定成为底下的模样:
127.0.0.0/255.255.255.0     : * : * : none
192.168.182.0/255.255.255.0 : * : * : none
*                           : * : * : deny
# 星号 (*) 代表任何数据都接受的意思。上面三行的意思是,开放 lo 内部接口、
# 开放内部 LAN 网域,且杜绝所有其他来源的 NIS 要求的意思。
# 还有一个简单作法,你可以先将上面三行批注,然后加入底下这一行即可:
*                         : * : * : none

3.设置hosts

说明: vim /etc/ypserv.conf  中的   dns: no   # NIS 服务器大多使用于内部局域网络,只要有 /etc/hosts 即可,不用 DNS ,我们在这里使用hosts
[root@Server lansgg]# vim /etc/hosts   
192.168.80.150  cnetos68
192.168.80.100  localhost.localdomain
 4.设置相关服务服务
[root@Server lansgg]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1002" #yppasswdd服务的端口

5.启动服务和开机自动启动

[root@cnetos68 桌面]# /etc/init.d/rpcbind restart   注意   这个先启动  
停止 rpcbind: [确定]
正在启动 rpcbind: [确定]

[root@cnetos68 桌面]# /etc/init.d/ypserv restart  (注意:服务启动前要设置好/etc/sysconfig/network的NISDOMAIN,否则yppasswdd无法启动)

停止 YP 服务器的服务: [确定]

设置 NIS 域名 zzhz: [确定]
启动 YP 服务器的服务: [确定]
[root@cnetos68 桌面]# /etc/init.d/yppasswdd restart
停止 YP 口令服务: [确定]
启动 YP 口令服务: [确定]

[root@cnetos68 桌面]# chkconfig ypserv on

[root@cnetos68 桌面]# chkconfig rpcbind  on

[root@cnetos68 桌面]# chkconfig yppasswdd on

[root@cnetos68 桌面]# chkconfig --list | grep yp

ypbind 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
yppasswdd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ypserv 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ypxfrd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

6.建立账号和密码 把账号和密码的数据转成数据库

[root@cnetos68 桌面]#  useradd  nisuser 

[root@cnetos68 桌面]# /usr/lib64/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers. cnetos68 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>.    提示安ctrl+D
next host to add: cnetos68
next host to add:
The current list of NIS servers looks like this:

cnetos68

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

cnetos68 has been set up as a NIS master server.

Now you can run ypinit -s cnetos68 on all slave server.

PS:如果你的用户密码有变动过(不是nis用户密码),那么你就得要重新制作数据库,重新启动 ypserv 及 yppasswdd;

7.NIS客户端设置

安装 软件 yum install ypbind  yp-tools -y 

[root@localhost nfs1]# setup  #修改的是/etc/sysconfig/network    /etc/nsswitch.conf 等文件

停止 portmap: [确定]

启动 portmap: [确定]

关闭 NIS 服务: [确定]
打开 allow_ypbind 的 SELinux 布尔值
关联到 NIS 域: [确定]
监听 NIS 域服务器。.
[root@localhost nfs1]# su nisuser
bash-3.2$ whoami
nisuser
bash-3.2$ id nisuser
uid=501(nisuser) gid=501(nisuser) groups=501(nisuser) context=root:system_r:unconfined_t:SystemLow-SystemHigh

一般建议使用setup来调整,如果要手动处理。就要修改下面的文件。

/etc/sysconfig/network (加入 NISDOMAIN 项目)

/etc/nsswitch.conf (修改许多主机验证功能的顺序)

/etc/sysconfig/authconfig (主机 的认证机制)

/etc/pam.d/system-auth (许多登入所需要的 PAM 认证过程)

/etc/yp.conf (ypbind 的设定档)

=================================================================================================================

客户端相碰命令
yptest:验证数据库文件

[root@localhost ~]# yptest
Test 1: domainname
Configured domainname is "zzhz"

Test 2: ypbind
Used NIS server: centos68

Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)    说明:早期的nobody  UID是65534  centos的UID是99. 这时提示找不到nobody. 

省略··························

Test 9: yp_all
zzhz zzhz:$6$om6rWtFEIHnbChd7$bc/7Wtas.8nhOMxXdCXIssHziyGHyC.27.IU9NuEvOJk6TuzsD4a8vgCY.yGkPa5/LEwyqpEvESpWDKsupjtJ1:500:500:zjolzzhz:/home/zzhz:/bin/bash
nisuser nisuser:rUNG98oaGJG4s:501:501::/home/nisuser:/bin/bash
nisuser2 nisuser2:YyEavjeg1Ym0Q:502:502::/home/nisuser2:/bin/bash    列出账号信息
1 tests failed
检查数据库名称和数据库相关文件。
[root@localhost ~]# ypwhich
centos68
[root@localhost ~]# ypwhich -x
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"   数据库的文件在/var/yp/zzhz/*
读取数据库内容 
[root@localhost ~]# ypcat passwd.byname
zzhz:$6$om6rWtFEIHnbChd7$bc/7Wtas.8nhOMxXdCXIssHziyGHyC.27.IU9NuEvOJk6TuzsD4a8vgCY.yGkPa5/LEwyqpEvESpWDKsupjtJ1:500:500:zjolzzhz:/home/zzhz:/bin/bash
nisuser:rUNG98oaGJG4s:501:501::/home/nisuser:/bin/bash
nisuser2:YyEavjeg1Ym0Q:502:502::/home/nisuser2:/bin/bash

 

yppasswd:修改nis账户 密码: 修改nis账户密码要注意:服务器的名称不能是IP地址。并且要在客户端上添加host记录。 因为服务器没有DNS做解析。

 

 

 

[root@localhost ~]# su - nisuser
su: warning: cannot change directory to /home/nisuser:   提示没有家目录。
-bash-3.2$

有两种方法。一种是直接创建家目录 。这个方法工作量大。

另一种是,把服务器账户的家目录使用NFS功能自动挂载到客户端。参数博客另一文章说明。

 

posted on 2018-09-06 10:20 yuanbangchen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Yuanbangchen/p/9596786.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值