NIS域配置详解
一、前期准备
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域配置详解的更多相关文章
- Nginx实现跨域配置详解
主要给大家介绍了关于Nginx跨域使用字体文件的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 问题描述 今天在使用子域名访问根域名的CSS时,发现字体无法显示,在确保CSS和Font字 ...
- 前台主页搭建、后台主页轮播图接口设计、跨域问题详解、前后端互通、后端自定义配置、git软件的初步介绍
今日内容概要 前台主页 后台主页轮播图接口 跨域问题详解 前后端打通 后端自定义配置 git介绍和安装 内容详细 1.前台主页 Homeviwe.vue <template> <di ...
- JSHint配置详解
Also available on Github JSHint配置详解 增强参数(Enforcing Options) 本类参数设为true,JSHint会产生更多告警. bitwise 禁用位运算符 ...
- 日志分析工具ELK配置详解
日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...
- crossdomain.xml的配置详解
目录 1 简介 2 crossdomain.xml的配置详解 3 总结 1 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及 ...
- JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目
一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...
- Tomcat 优化方案 和 配置详解(转)
转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...
- Nginx 反向代理工作原理简介与配置详解
Nginx反向代理工作原理简介与配置详解 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...
- Centos7上部署openstack ocata配置详解
之前写过一篇<openstack mitaka 配置详解>然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档 OpenStack ocata ...
随机推荐
- tyvj1614 魔塔魔塔!
描述 百度noip贴吧管理组开发了一个小游戏,叫魔塔魔塔.虽然把魔塔重复了两次,但其实还只是个魔塔而已,还是简化版的.游戏在一个N*M大小的地图中进行,每一格都是正方形.对于某一格,有若干种可能的状态 ...
- Java Sax解析
一. Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode.如下面的这段boo ...
- html5开发制作,漂亮html5模板欣赏,H5网站建设
html5是什么? HTML5 是下一代的 HTML(超文本标记语言,网页的组成部分),HTML5是web开发世界的一次重大的改变,能适配pc.手机等各终端,跨平台性能极强,移动互联网是未来的趋势,h ...
- UVA1376.Animal Run (最小割转为最短路 && dijkstra)
Animal Run Time Limit:6000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status ...
- iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例
一.纯代码自定义不等高cell 废话不多说,直接来看下面这个例子先来看下微博的最终效果 首先创建一个继承UITableViewController的控制器@interface ViewControll ...
- navigationcontroller手势翻页和navigationbar
一. 系统导航默认手势 #import "CBNavigationController.h" //手势返回 @interface CBNavigationController () ...
- aspcms标签
[newslist:date style=yy-m-d] 日期格式 {aspcms:sitepath}/Templates/{aspcms:defaulttemplate} 幻灯片标签{aspcms: ...
- [转载]Jquery mobile 新手问题总汇
原文链接:http://www.wglong.com/main/artical!details?id=4 此文章将会持续更新,主要收录一些新手比较常见的问题. 欢迎 向我推荐比较典型的常见问题,我会记 ...
- Linux的后台执行进程之nohup
nohup 用途:LINUX命令用法,不挂断地运行命令. 语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关 ...
- Java微博搜索关键字采集
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...