NIS(Network Information Service)网络信息服务,主要功能是提供用户登录信息给客户端主机查询之用,用于企业局域网Linux主机账户的集中管理(非跨平台)。NIS服务器在大型企业网络环境可以使用Master/Slave(主控/辅助)架构。

NIS服务器需知

NIS服务器工作原理图

当客户端主机连接NIS服务器时候,Server端会将相关数据提供给客户机,包含以下信息:

  • /etc/passwd 用户账号、UID、GID、家目录位置、shell等信息。
  • /etc/group 群组数据以及GID的对应关系,还有该群组成员。
  • /etc/hosts 主机名与IP的对应关系。
  • /etc/services 每一种服务(守护进程)所对应的端口。
  • /etc/protocols TCP/IP封包协定,如TCP, UDP, ICMP等。
  • /etc/rpc 每种RPC服务所对应的程序号码。
  • /var/yp/ypservers NIS服务器所提供的数据库。

NIS服务器所提供的数据不是传统的文本数据,而是经过NIS服务器将配置文件数据重新编译成读写速度较快的“数据库”文件系统。

NIS Server (master/slave)运作流程:

1、NIS Master将本地系统账户信息制作成数据库档案;
2、NIS Master会主动通知NIS Slave更新数据;
3、NIS Slave也会主动找NIS Master获取更新后的数据;
4、NIS 服务器帐号信息有变化时候需要重新只做数据库档案,且重新同步Master/Slave。

NIS Client登录时查询流程:

1、NIS Client登录时候会先查询本地/etc/passwd, /etc/shadow等账户档案。
2、本地找不到账号数据开始向NIS网段主机广播查询,NIS服务器不论Master/Slave都会响应,先响应者优先。

所需软件包:

    • yp-tools 提供NIS相关命令查询功能
    • ypbind 提供NIS Client端软件
    • ypserv 提供NIS Server端软件
    • rpcbind rpcbind(老版本叫protmap)是一个管理RPC连接的程序,rpcbind服务对NIS是必须的,因为它是NIS的动态端口分配守护进程,如果rpcbind不启动,NIS也无法运行。

NIS Server端配置

NIS服务器端主要在于提供数据库给客户端作为验证之用,NIS服务器类型有 Master 与 Slave,本文里只是配置了Master 。

服务器端软件包安装

      yum -y install yp-tools ypbind ypserv rpcbind

NIS相关配置文件

      • /etc/ypserv.conf:ypserv主要配置文件,可控制客户端登录权限。
      • /etc/hosts:保存NIS Server/Client用到的网络主机名与IP的对应关系,每一台主机名与IP都需要记录!
      • /etc/sysconfig/network:指定NIS的域名(和 nisdomainname命令实现相同功能)。
      • /var/yp/Makefile:和建立数据库有关的动作配置文件。

NIS相关服务

    • /usr/sbin/ypserv:NIS服务器的主要提供服务。
    • /usr/sbin/rpc.yppasswdd:提供的NIS客户端的用户密码修改服务,开启这个服务,NIS客户端可以直接修改在NIS服务器上的密码。

NIS相关命令

    • /usr/lib64/yp/ypinit:建立数据库的指令,(32位系统:/usr/lib/yp/ypinit)。
    • /usr/bin/yppasswd:NIS客户端操作命令,让用户修改服务器上的密码。

设置NIS的域名

echo 'NISDOMAIN=liebaonis.local' >> /etc/sysconfig/network #设置NIS域名 
echo 'YPSERV_ARGS="-p 1011"' >> /etc/sysconfig/network #设置NIS端口

为了让yppasswdd也使用固定端口,便于防火墙管理:

      sed -i 's/YPPASSWDD_ARGS=/YPPASSWDD_ARGS="--port 1012"/' /etc/sysconfig/yppasswdd

使用命令配置NIS域名的方法,三条命令都可以:

      nisdomainname liebaonis.local
      ypdomainname liebaonis.local
      domainname liebaonis.local

主配置文件 /etc/ypserv.conf

      #NIS服务器大多使用于内部局域网,只要有/etc/hosts即可,不用DNS!
      dns: no
      #预设会有30个数据库被读入内存当中。
      files: 30
      #需不需要将NIS注册到SLP(服务定位协议)
      slp: no
      slp_timeout: 3600
      #与Master/Slave有关,将同步更新的数据库比对所使用的端口,放置于<1024内。
      xfr_check_port: yes
      # 下面是设定限制客户端或Slave Server查询的权限,利用冒号隔成四部分:
      #

主机名/IP:NIS域名:可用数据库名称:安全限制
 

      #

[主机名/IP]

      可以使用 network/netmask 如 192.168.100.0/255.255.255.0
      #

[NIS域名]

      之前设定的NIS域名
      #

[可用数据库名称]

      就是由 NIS 制作出来的数据库名称;
      #

[安全限制]

      包括没有限制(none)、仅能使用<1024端口(port)、拒绝(deny)
      #*                                             :     *          :     shadow.byname : port
      #* : * : passwd.adjunct.byname : port
      vi/etc/ypserv.conf
      屏蔽*开头的几行然后,增加行
      192.168.0.0/16 : *:* : none

设置主机名和IP地址对应关系

      echo "192.168.188.30 nis.liebaonis.local nis" >> /etc/hosts #服务器IP与主机名对应
      echo "192.168.188.101 xx.liebaonis.local xx" >> /etc/hosts #客户机IP与主机名对应

启动NIS所有服务

/etc/init.d/ypserv start
/etc/init.d/yppasswdd start
/etc/rc.d/init.d/rpcbind start
chkconfig --level 35 ypserv on
chkconfig --level 35 yppasswdd on
chkconfig --level 35 rpcbind on

创建用户和建立NIS数据库

为了防止客户端本地用户跟NIS用户冲突,所以创建NIS用户最好将UID设置为2000以上并建立独立的家目录。

mkdir /nishome
useradd -u 2001 -d /nishome/user1 user1 #用户名

echo password | passwd --stdin user1 #密码

将用户信息转换为NIS数据库文件:

/usr/lib64/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS

servers.  localhost.localdomain 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>.

next host to add:  nismaster.1987.name    #系统主机名自动提取

next host to add:                         #按Ctrl+D继续

The current list of NIS servers looks like this:

localhost.localdomain

Is this correct?  [y/n: y]  y                     #键入“y”

We need a few minutes to build the databases...

Building /var/yp/1987.name/ypservers...

Running /var/yp/Makefile...

gmake[1]: Entering directory `/var/yp/1987.name'

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/1987.name'

localhost.localdomain has been set up as a NIS master server.

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

如果iptables开启需要开放相应的端口。配置数据库后需要重启NIS相关服务。

NIS客户端设置

NIS客户端设置很简单,配置NIS域名之后启动ypbind即可。

客户端软件包安装

yum -y install yp-tools ypbind rpcbind

NIS客户端相关配置文件:

    • /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数据库。

NIS客户端相关命令:

      • /usr/bin/yppasswd:更改在NIS Database(NIS Server的数据库)的密码。
      • /usr/bin/ypchsh:同上,但是是更改 Shell
      • /usr/bin/ypchfn:同上,但是是更改一些用户信息。
      • /usr/sbin/yptest:直接在NIS Client输入yptest即可检查相关的测试数据。
      • /usr/bin/ypwhich -x:显示NIS Client与Server之间沟通的数据库有哪些。
新安装的CentOS 6.4系统执行setup 命令,提示命令找不到
[root@localhost ~]# setup 
-bash: setup: command not found
 
解决方案:安装setup必要的软件包 setuptool
#安装setuptool
[root@localhost ~]# yum install setuptool 

配置NIS客户端

如果手动修改配置文件会相当麻烦,这里使用 setup 命令配置NIS客户端:

1、选择Authentication configuration项回车:

利用 setup 进入 authconfig 认证项目

2、选择 Use NIS 按Next到下一步:

进入 authconfig 之后,选择 NIS 项目

3、填写 NIS 域名 (Domain) 和 NIS 服务器的 IP (Server),按下确定即可:

填写 NIS 域名和 NIS 服务器的 IP

之后系统会打印出以下信息:

Stopping portmap: [ OK ]
Starting portmap:                                          [  OK  ]
Shutting down NIS services:                                [  OK  ]
Turning on allow_ypbind SELinux boolean
Binding to the NIS domain:                                 [  OK  ]

Listening for an NIS domain server.

NIS客户端到这里已经配置完成。

CentOS6.4 上搭建NIS网络信息服务器的更多相关文章

  1. CENTOS6.6上搭建单实例ORACLE12C

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...

  2. vmware上搭建kickstart 网络安装centos6.2的过程

    前言 什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)协议使计算机可以通过网络启动.协议分client和server. PXE client 在网 ...

  3. CentOS6.4上搭建hadoop-2.4.0集群

    公司Commerce Cloud平台上提供申请主机的服务.昨天试了下,申请了3台机器,搭了个hadoop环境.以下是机器的一些配置: emi-centos-6.4-x86_64medium | 6GB ...

  4. centos6.5上搭建gitlab服务器(亲测可用哦)

    最近的版本控制中,git可谓是脱缰的野马,一发不可收拾.当然git的设计模式也是愈发的成熟,让人刮目相看,完美解决了svn上的不足之处.在目前分布式横行的天下,git可谓是占得了一席之地. 废话少说, ...

  5. [证书服务器 第二篇] 基于OpenSSL 在 CentOS6 系统上 搭建自签证书服务,并应用于Web容器

    第一部分:概述 .. 第二部分:环境准备 1 操作系统 CentOS 6.x 2 安装openssl yum install -y openssl 3 安装jdk 从官网下载JDK http://ww ...

  6. CentOS6.3上搭建expect无交互开发环境

    1.背景 在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则:现在expect就解决了这个问题, Expect是一个免费的编程工具语言,用来实现自动和交互 ...

  7. Linux CentOS6.5上搭建环境遇到的问题

    1.卸载CentOS自带的JDK 查看centos上 安装的jdk:rpm -qa|grep jdk 出现如下: java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86 ...

  8. 【linux轻松学】centos6.5上搭建svn服务器

    今天花了一下午,把svn环境搭好了,写篇文章分享…… 1.安装 先查看是否已经安装,如果有旧版,先删除再安装. 查看rpm -qa subversion 删除yum remove subversion ...

  9. CENTOS6.4上KVM虚拟机环境搭建

    CENTOS6.4上KVM虚拟机环境搭建   关键词: KVM,虚拟机,windows7, VNC, 桥接网络,br0, SCSI, IDE   环境: host: CENTOS6.4 guest: ...

随机推荐

  1. Linux:tree命令详解

    tree 以树状图列出目录的内容 语法 tree(选项)(参数) 选项 -a:显示所有文件和目录: -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合: -C:在文件和目录清单加上色彩,便于 ...

  2. Python 使用 os.fork() 创建子进程

    Linux 操作系统提供了一个 fork() 函数用来创建子进程,这个函数很特殊,调用一次,返回两次,因为操作系统是将当前的进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回.子进程永 ...

  3. Kafka 单节点单Kafka Broker集群

    下载与安装 从 http://www.apache.org/dist/kafka/ 下载最新版本的 kafka,这里使用的是 kafka_2.12-0.10.2.1.tgz $ tar zxvf ka ...

  4. 01-名字管理系统.py

    #-*- coding:utf-8 -*- #1.打印功能提示 print("-"*50) print("名字管理系统 V8.6") print("1 ...

  5. 你离BAT之间,只差这一套Java面试题

    最近,各大公司开始了春招,很多人已经开始在准备面试了,特地来总结下初中级程序员应该掌握的面试题目.这篇面试指南,只适用于初中级程序员,其中不涉及分布式等问题.关于中高级的程序员问题,我后面可能再出一篇 ...

  6. 圣诞节为大家推荐一些学习java书籍

    怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序员经常会问到的问题 初级 ...

  7. TCP 和 UDP 的区别( 面向连接 和 面向无连接 )

    第一:TCP 和 UDP 的区别( 面向连接 和 面向无连接 ) TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才 ...

  8. 【剑指offer】09-2跳台阶,C++实现

    原创博文,转载请注明出处! # 本文是牛客网<剑指offer>刷题笔记 1.题目 # 一只青蛙一次可以跳1级台阶,也可以跳2级.求该青蛙跳n级的台阶总共有多少种跳法. 2.思路 # 跳0级 ...

  9. 【排序】归并排序,C++实现

    原创文章,转载请注明出处! 博客文章索引地址 博客文章中代码的github地址 # 基本思想(分治法)       归并排序中, “归”代表递归的意思,即递归的将数组通过折半的方式分离为单个数组. “ ...

  10. typecho去index.php

    RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} ! ...