一、前期准备
1.1 NIS 简介
NIS,英文的全称是network information service,也叫yellow pages。在Linux中,NIS是一个基于RPC的client/server系统,需要使用 RPC 服务。
RPC即Remote Procedure Call Protocol(远程过程调用协议),RPCBIND用于取代旧版本中的portmap组件。简单说,RPCBIND就是为了将不同服务与对应的端口进行绑定,以便支持机器间的相互操作。
---------------------------

1.2 术语
NIS域名: NIS 主服务器和所有其客户机 (包括从服务器) 会使用同一NIS 域名。和 Windows NT 域名类似,NIS 域名与 DNS 无关。
ypserv: NIS 的服务器进程,只在server端运行。如果 ypserv 死掉的话,则服务器将不再具有响应 NIS 请求的能力。
yppasswdd: 另一个只应在 NIS 主服务器上运行的进程; 这是一个服务程序,其作用是允许 NIS 客户机改变它们的 NIS 口令。如果没有运行这个服务,用户将必须登录到 NIS 主服务器上,并在那里修改口令。
ypbind: “绑定(bind)” NIS 客户机到它的 NIS 服务器上。它将从系统中获取 NIS 域名,并使用 RPC 连接到服务器上。ypbind 是 NIS 环境中客户机-服务器通讯的核心; 如果客户端的 ypbind 死掉的话,将无法访问 NIS 服务器。
---------------------------

1.3 必须条件
a) 服务器端和客户端要安装运行支持服务rpcbind
b) c/s两端要分别安装nis软件包,并配置正确
c) 服务端要输出NFS共享目录,客户端要挂载SERVER端的共享目录
d) 客户端须修改用户帐号信息查询方式为NIS
e) 服务端本地信息更改,须重建NIS数据库
---------------------------

1.4 需要安装的packages
yp-tools :提供 NIS 相关的查询命令
ypbind   :NIS Client 端
ypserv   :NIS Server 端
rpcbind  :NIS 需要的 RPC 服务
---------------------------

1.5 package 详细组成
a) yp-tools: yp的工具包,主要包含如下工具:
/usr/bin/ypcat
/usr/bin/ypchfn
/usr/bin/ypchsh
/usr/bin/ypmatch
/usr/bin/yppasswd * 修改NIS USER的密码
/usr/bin/ypwhich
/usr/sbin/yppoll
/usr/sbin/ypset
/usr/sbin/yptest
/usr/share/locale/de/LC_MESSAGES/yp-tools.mo
/var/yp
/var/yp/nicknames * yb服务器端所包含的MAP信息,若将该文件移处,则yp-tools中的命令将不可用
   
b) ypserv: yp的服务器端软件包,包含了三个服务:
* ypserv yp主服务进程;
* yppasswd yp服务器支持客户端修改用户密码的服务;
* ypxfrd yp主服务器与从服务器之间数据更新同步的控制服务。
该软件包的详细组成如下:
/etc/rc.d/init.d/yppasswdd * yppasswdd服务启动脚本
/etc/rc.d/init.d/ypserv * ypserve服务启动脚本
/etc/rc.d/init.d/ypxfrd * ypxfrd服务启动脚本
/etc/sysconfig/yppasswdd * yppasswdd服务默认参数配置文件
/etc/ypserv.conf * ypserv服务配置文件
/usr/include/rpcsvc/ypxfrd.x
/usr/lib/yp * ypserv一些重要的命令存放目录
/usr/lib/yp/create_printcap
/usr/lib/yp/makedbm
/usr/lib/yp/match_printcap
/usr/lib/yp/mknetid * 更新用户及密码库(将passwd转变成dbm)
/usr/lib/yp/revnetgroup
/usr/lib/yp/yphelper
/usr/lib/yp/ypinit * 初始化ypserv服务所提供的所有信息,将文本转变成dbm格式
/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 * ypserv服务主程序
/var/yp
/var/yp/securenets * ypserv 用于设置授权客户端的配置文件。
/var/yp/Makefile * ypinit –m时会用到Makefile,如果移走,则ypinit会不成功
 
c) ypbind: yp的客户端程序,主要包含如下内容:
/etc/rc.d/init.d/ypbind
/etc/yp.conf
/sbin/ypbind
/usr/share/locale/de/LC_MESSAGES/ypbind.mo
/var/yp
/var/yp/binding

================================================================
二、安装NIS
安装环境:CentOS release 6.4 x64,Kernel 2.6.32-358.el6.x86_64

2.1 server 端安装
[root@ice etc]# yum install -y rpcbind yp-tools ypbind ypserv

2.2 client 端安装
[root@ice etc]# yum install -y rpcbind yp-tools ypbind
##client端不需要ypserv包

================================================================
三、配置NIS
重要的配置文件:
/etc/ypserv.conf:server 端最主要的 ypserv 软件所提供的配置文件,可以规范 NIS 客户端是否可登入的权限。
/etc/hosts:由于 NIS server/client 会用到网络主机名与 IP 的对应,每一部主机名与 IP 都需要记录才行。
/etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。
/var/yp/Makefile:账号数据要转成数据库文件,这就是与建立数据库有关的动作配置文件。
/etc/yp.conf :client端的配置文件。
/etc/nsswitch.conf :配置优先读取哪里的账号信息。如:本地,NIS,db,ldap等。
/var/yp/securenets :(可选)安全配置文件,比ypserv.conf具有更高的访问控制的级别与效率。
/etc/exports: 设定 NFS 共享目录。
---------------------------
假定参数如下:
NIS 的域名为 icenis
整个内部的信任网域为 192.168.80.0/24
NIS master server 的 IP 为 192.168.80.129 ,主机名为 server.dl.cn
NIS client 的 IP 为 192.168.80.135,主机名为 client.dl.cn

---------------------------
需要配置的文件
/etc/sysconfig/network
/etc/ypserv.conf
/etc/hosts
/etc/sysconfig/yppasswdd

---------------------------
3.1 server 端配置
a) 设置 NIS 的域名,新增如下内容
[root@server ~]# vi /etc/sysconfig/network
NISDOMAIN=icenis #设定nis的域名
YPSERV_ARGS="-p 1011" #设定nis固定在1011端口,方便设定防火墙规则

b) 设定server端的主配置文件/etc/ypserv.conf
[root@server ~]# vi /etc/ypserv.conf
dns: no
# NIS 服务器大多使用于内部局域网络,只要有 /etc/hosts 即可,不用 DNS
files: 30
# 默认会有 30 个数据库被读入内存当中,账号多的话,可以调大点。
xfr_check_port: yes
# 与 master/slave 有关,将同步更新的数据库比对所使用的端口,放置于 <1024 内。
# 底下则是设定限制客户端或 slave server 查询的权限,利用冒号隔成四部分:
# [主机名/IP] : [NIS域名] : [可用数据库名称map] : [安全限制security]
# [主机名/IP]   :可以使用 network/netmask 如 192.168.80.0/255.255.255.0 
# [NIS域名]   :icenis
# [可用数据库名称]:就是由 NIS 制作出来的数据库名称;
# [安全限制]      :包括没有限制 (none)、仅能使用 <1024 (port) 及拒绝 (deny)
# 一般来说,你可以依照我们的网域来设定成为底下的模样:
# Host                     : Domain  : Map : Security
127.0.0.0/255.255.255.0     : * : * : none
192.168.80.0/255.255.255.0 : * : * : none
*                           : * : * : deny
# 星号 (*) 代表任何数据都接受的意思。上面三行的意思是,1)开放 lo 内部接口、
# 2)开放内部 LAN 网域,3)且杜绝所有其他来源的 NIS 要求的意思。
# 还有一个简单作法,你可以先将上面三行批注,然后加入底下这一行即可:
*                         : * : * : none
#这样会允许任何主机连接到 NIS server,可以配合防火墙规则再做过滤。

c) 设定IP地址与主机名的对应关系/etc/hosts,新增如下内容
[root@server etc]# vi /etc/hosts
192.168.80.129  server.dl.cn
192.168.80.135  client.dl.cn

d) 让yppasswdd启动在固定端口,方便防火墙管理
[root@server etc]# vi /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port 1012"

---------------------------
3.1.1 启动相应服务,并设为开机启动
[root@server etc]# /etc/init.d/rpcbind start
[root@server etc]# /etc/init.d/ypserv start
[root@server etc]# /etc/init.d/yppasswdd start
[root@server etc]# chkconfig ypserv on
[root@server etc]# chkconfig yppasswdd on

---------------------------
3.1.2 新建 NIS 账号并建立资料库
a) 新建5个账号
[root@server etc]# for i in `seq 1 5`; do echo "=====create nisuser$i====="; useradd -u 100$i nisuser$i; echo password | passwd --stdin nisuser$i; done

b) 建立资料库
[root@server etc]# /usr/lib64/yp/ypinit -m
#ypinit命令初始化主服务器和常见NIS映射表。默认的ypinit同make命令给出的操作一样。
#按照提示 ctrl+D,确认即可完成资料库建立。
#如果你的用户信息有变动过,那么你就得要重新制作数据库,make -C /var/yp

---------------------------
3.1.3 在 server 端新增账号或者删除账号或者修改账号信息后
[root@server home]# cd /var/yp
[root@server yp]# make
或者
[root@server ~]# make -C /var/yp
把信息写进资料库,让后 client 端才可以读取到最新信息
---------------------------

3.2 client 端配置
/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 数据库;
---------------------------

a) 修改network内容,增加nisdomain
[root@ice ~]# vi /etc/sysconfig/network
NISDOMAIN=icenis

b) 添加 nis server 的ip
[root@client ~]# vi /etc/hosts
192.168.80.129  server.dl.cn

c) 设定 nis server 的域名和ip
[root@client ~]# vi /etc/yp.conf
domain  icenis  server  192.168.80.129

d) 配置账户信息的读取顺序
[root@client ~]# vi /etc/nsswitch.conf
passwd:     files nis
shadow:     files nis
group:      files nis

3.2.1 启动相应服务,并设为开机启动
[root@client ~]# /etc/init.d/rpcbind start
[root@client ~]# /etc/init.d/ypbind start
[root@client ~]# chkconfig rpcbind on
[root@client ~]# chkconfig ypbind on

3.2.2 NIS client 端的检验: yptest, ypwhich, ypcat
a) yptest用来测试 server 端和 client 端能否正常通讯
[root@client ~]# yptest 
#如果配置成功,会返回成功的结果
#如果返回fail,则根据提示进行排查

b) ypwhich用来查看资料库映射数据
[root@client ~]# ypwhich #返回 NIS domain
server.dl.cn
[root@client ~]# ypwhich -x #返回可用数据库(map 映射)
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"

c) ypcat 与 ypwhich 功能类似
[root@client ~]# ypcat -k passwd(-k不是必须的,可以试下) #读取passwd资料库的内容

d) client 端修改账号信息需要用到:
yppasswd :与 passwd 相同功能;修改nis用户的密码,并在nis server端更新。
ypchfn :与 chfn 相同功能;Changing finger information
ypchsh :与 chsh 相同功能。Changing user login shell

========值得注意的一些点========================================================
如果服务有异常,可以用 yptest 排错
1) 如果ypserv没有启动,在client端执行yptest返回
Test 2: ypbind
can't yp_bind: Reason: Domain not bound

2) 如果ypbind没有启动,在client端执行yptest返回
Test 2: ypbind
Can't communicate with ypbind

3) 如果在server端删除用户,但是没有 make -C /var/yp 的话,client端仍然能够用这个用户登录。

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

鸟哥教程:http://vbird.dic.ksu.edu.tw/linux_server/0430nis/0430nis-centos4.php#whatisnis_use

NIS域配置详解的更多相关文章

  1. Nginx实现跨域配置详解

    主要给大家介绍了关于Nginx跨域使用字体文件的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 问题描述 今天在使用子域名访问根域名的CSS时,发现字体无法显示,在确保CSS和Font字 ...

  2. 前台主页搭建、后台主页轮播图接口设计、跨域问题详解、前后端互通、后端自定义配置、git软件的初步介绍

    今日内容概要 前台主页 后台主页轮播图接口 跨域问题详解 前后端打通 后端自定义配置 git介绍和安装 内容详细 1.前台主页 Homeviwe.vue <template> <di ...

  3. JSHint配置详解

    Also available on Github JSHint配置详解 增强参数(Enforcing Options) 本类参数设为true,JSHint会产生更多告警. bitwise 禁用位运算符 ...

  4. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

  5. crossdomain.xml的配置详解

    目录 1 简介 2 crossdomain.xml的配置详解 3 总结 1 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及 ...

  6. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

  7. Tomcat 优化方案 和 配置详解(转)

    转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...

  8. Nginx 反向代理工作原理简介与配置详解

    Nginx反向代理工作原理简介与配置详解   by:授客  QQ:1033553122   测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...

  9. Centos7上部署openstack ocata配置详解

    之前写过一篇<openstack mitaka 配置详解>然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档 OpenStack ocata ...

随机推荐

  1. Elven Postman(BST )

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  2. jsp+servlet

  3. JavaScript判断图片是否加载完成的三种方式

    JavaScript判断图片是否加载完成的三种方式 有时需要获取图片的尺寸,这需要在图片加载完成以后才可以.有三种方式实现,下面一一介绍. 一.load事件 1 2 3 4 5 6 7 8 9 10 ...

  4. Effective Java 读书笔记之八 异常

    一.只针对异常的情况才使用异常 1.类具有状态相关的方法时,可采用状态测试方法和可识别的返回值两个策略. 二.对可恢复的情况使用受检异常,对编程错误使用运行时异常 1.期望调用者能够适当恢复的情况,应 ...

  5. 使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments

    使用C++扩展Python的功能 环境 VS2005Python2.5.4 Windows7(32位) 简介 长话短说,这里说的扩展Python功能与直接用其它语言写一个动态链接库,然后让Python ...

  6. Android 数据存储之 文件存储

    -------------------------------------------文件存储----------------------------------------------- 文件存储是 ...

  7. HDU 2861 四维dp打表

    Patti and Terri run a bar in which there are 15 stools. One day, Darrell entered the bar and found t ...

  8. HDU 2222 ----AC自动机

    Problem Description In the modern time, Search engine came into the life of everybody like Google, B ...

  9. Python自动化之异常处理

    1 异常基本结构 try: pass except Exception,ex: pass 2 异常种类 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x ...

  10. django的分页--不全也未实现

    一.Django内置分页 Paginator 二.自定义分页 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置. 1.设定每页显示数据条数 2.用户输 ...