Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • 第七章:NIS服务全攻略

    作者: 羽飞 | 发布时间: 星期六, 02/06/2010 - 22:13 |

    内容简介
    NIS简介
    NIS所需软件及相关的服务
    NIS常用工具
    NIS相关配置文件
    NIS服务器与客户端配置步骤
    案例详解

    NIS简介
    NIS(Network Information Service)是一个为网络中所有的机器提供网络信息的系统,包括用户名、密码、主目录、组信息等。如果某个用户的用户名以及密码保存在了NIS密码数据库中,NIS允许此用户在网络当中的任何一台运行有NIS客户程序的机器上登陆。这使得整个网络看起来象一个独立系统,在所有的主机上有着相同的帐号。

    NIS工作原理(图)

    图片1.jpg

    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/netgroup 网络群组的定义与使用 (NIS 可能会需要)
    /etc/rpc 每种 RPC 服务器所对应的程序号码
    /var/yp/ypservers NIS 服务器所提供的数据库

    NIS服务一览
    后台进程:ypserv,ypbind,yppasswdd
    使用端口:由portmap (111)分配
    所需RPM包:ypserv,ypbind,yp-tools
    相关RPM包:portmap
    服务端配置文件:/etc/ypserv.conf /var/yp/*

    NIS所需软件
    ypserv-*.rpm:NIS服务的主程序包,提供NIS服务端的设定软件包
    yp-tools-*.rpm:提供NIS相关查询指令的软件包
    ypbind-*.rpm:提供NIS客户端设定功能的功能的软件包
    portmap-*.rpm:管理RPC连接、启动RPC必需的软件包

    NIS常用工具
    ypcat:列出来自NIS server的map信息
    ypinit:建立并安装NIS database
    ypwhich:列出NIS server的名称
    ypset:强制指定某台机器当NIS server
    makedbm:创造NIS map的dbm档

    与数据库有关的指令
    /usr/sbin/yppush:master 主机将数据库直接送至 slave 的指令;
    /usr/lib/yp/ypinit:建立数据库的指令,非常常用;
    /usr/lib/yp/ypxfr:传送数据库的指令。

    NIS相关配置文件
    /etc/ypserv.conf:这是最主要的设定档, 可以规范 NIS 客户端是否可登入的权限。
    /etc/hosts:每一部主机都需要记录才行。
    /etc/netgroup:设定信任的主机与网域;
    /var/yp/Makefile:与建立数据库有关的动作设定文件;
    /etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。

    【NIS服务器端配置】

    第一步:安装相关软件
    ypserv-*.rpm:NIS服务的主程序包,提供NIS服务端的设定软件包
    yp-tools-*.rpm:提供NIS相关查询指令的软件包
    ypbind-*.rpm:提供NIS客户端设定功能的功能的软件包
    portmap-*.rpm:管理RPC连接、启动RPC必需的软件包

    第二步:配置服务器端
    ① 设置NIS域名为nis.test
    第一种方法:
    通过以下命令:
    #nisdomainname nis.test
    为了系统启动后自动执行此操作,可以将此命令添加到文件/etc/rc.local中。
    命令为:echo “/bin/nisdomainname nis.test” >> /etc/rc.local

    第二种方法
    在/etc/sysconfig/network文件中,最后加入
    NISDOMAIN=nistest
    然后启动ypserv服务,就会开启NIS域名了

    ② 配置服务器端主配置文件

    /etc/ypserv.conf主配置文件

    在整个ypserv.conf主配置文件中,最为重要的就是限制客户端或从服务器的查询权限。
    格式为:
    Host : Domain : Map : Security
    Host:指定客户端,可以指定具体IP地址,也可以指定一个网段
    Domain:设置NIS域名,这里的NIS域名和DNS中的域名并没有关系,两者是两套不同系统,在同一个NIS域中,客户端可以从NIS服务器上查询用户名和密码,从NIS服务器可以与主服务器同步数据库内容
    Map:设置可用数据库名称,可以用”*”代替所有数据库

    Security:安全性设置。主要有none、port和deny三种参数设置。
    none:没有任何安全限制,可以连接NIS服务器。
    port:只允许小于1024以下的端口连接NIS服务器。
    deny:拒绝连接NIS服务器。

    通常设置思路是允许所有内网客户端连接NIS服务器,除此之外的客户端都拒绝连接

    ypserv.conf文件是逐行解释执行,所以要注意设置顺序
    127.0.0.1/255.0.0.0:*:*:none
    192.168.8.0/255.255.255.0:*:*:none
    *:*:*:deny
    其它参数保持默认值即可!

    ③ 初始化NIS数据库
    首先要启动ypserv服务,否则建立NIS数据库会报错”failed to send ‘clear’ to local ypserv: RPC: Program not registeredUpdating passwd.byuid…”。我也在网上GOOGLE了半天没有找到答案,无意中发现这个问题,所以在这里也提醒一下大家,很多一些小问题,折腾人啊!!

    运行命令:/usr/lib/yp/ypinit -m ,然后设置主数据库存储主机的名称,然后按CTRL+D键,最后按Y确认,最后程序将创建初始化
    的NIS数据库,创建完成后,在目录/var/yp下会有相应的文件记录设置。

    ④ 建立信任群(可以省略)
    可以使用/etc/netgroup文件来建立NIS服务器所信任的客户端
    格式:host,user,domain
    如果这个文件没有内容,则代表所有的主机、帐号和域名都接受哈~因为已经在/etc/ypserv.conf中设置好了关于安全的项目,默认此文件不存在,所以这个文件只要建立就可以了

    ⑤ 修改/var/yp/ypservers配置文件
    添加NIS域中NIS服务器名称

    ⑥ 启动服务

    当NIS数据库被建立之后,需要通知ypserv和yppasswdd这两个服务,以告知NIS数据库被更新过
    启动服务器端的相关服务包括portmap和ypserv,yppasswdd,命令如下:
    service portmap restart
    service ypserv restart
    service yppasswdd restart

    此外为了使主/从NIS服务器完成数据库同步,我们需要在NIS主服务器上启动ypxfrd服务
    如果是从服务器,要使用/usr/lib/yp/ypinit -s NIS服务器ip或主机名 来同步数据

    当主NIS服务器更新数据并使用ypinit -m命令重新生成数据库后,从NIS服务器上的数据就会不一致,这时候我们可以在从NIS服务器上使用ypxfr命令同步数据库信息保持数据状态为最新
    命令格式如下
    ypxfr -h NIS主服务器IP或主机名 数据库文件
    ypxfr -h nis passwd.byname
    ypxfr -h nis passwd.byuid


    附:

    NIS固定端口配置
    NIS和NFS服务相似,同样使用随机端口,我们可以配置固定端口加强NIS的可管理性
    (1)修改/etc/sysconfig/network
    添加YPSERV_ARGS和YPXFRD_ARGS字段,可以设置NIS的ypserv和ypxfrd两个进程使用固定端口号,而对于yppasswd则不提供支持,我们可以使用参数-p指定固定端口
    格式如下:
    YPSERV_ARGS=”-p 666″
    YPXFRD_ARGS=”-p 667″

    修改后,重启服务并测试
    修改network配置文件后我们需要重启network、ypserv和ypxfrd服务,然后可以使用rpcinfo -p查看端口使用情况

    【NIS客户端配置】
    第一步:安装NIS客户端程序

    安装NIS的客户端程序包portmap,ypbind和yp-tools。


    第二步:设置NIS域名为

    通过以下命令:
    #nisdomainname nis.test

    通过以下命令:
    #echo “NISDOMAIN=nis.test” >> /etc/sysconfig/network

    第三步:修改/etc/yp.conf文件
    在客户端/etc/yp.conf文件中设置NIS服务器的主机名和NIS域名
    如:
    ypserver nis
    domain nisdomain


    第四步:修改/etc/hosts文件
    如果没有DNS服务器,那我们必须确保/etc/hosts文件中有NIS服务器的记录

    第五步:更改密码验证方式。

    可以用两种方法

    第一种方法:字符界面修改下面这四个文件
    * /etc/nsswitch.conf (修改许多主机验证功能的顺序)
    * /etc/sysconfig/authconfig (CentOS/RHEL 的认证机制)
    * /etc/pam.d/system-auth (许多登入所需要的 PAM 认证过程)
    * /etc/yp.conf ( ypbind 的设定文档)

    /etc/nsswitch.conf
    # 这个档案的内容有相当多,不过如果你只想要进行登入验证,可以这样:
    passwd: files nis
    shadow: files nis
    group: files nis
    hosts: files nis dns
    # 亦即只要加入 nis 即可!这几个设定的意义是:
    # 1. passwd: 就是使用者相关信息查寻,分别为 /etc/passwd, nis
    # 2. shadow: 就是使用者密码的查寻, /etc/shadow, nis
    # 3. group: 就是使用者的群组信息查寻, /etc/group, nis
    # 4. hosts: 就是主机名称与IP对应的查寻,/etc/hosts, nis 及 /etc/resolv.conf

    nsswitch.conf记录了系统查询用户密码、组、主机名等资源的遵循顺序
    确定nsswitch.conf文件中需要向服务器查询数据的资源顺序中包含NIS项
    查询资源可以是:
    files:本地文件
    dns:域名服务器
    nis/nisplus:NIS服务器
    ldap:ldap服务器db:数据库


    /etc/sysconfig/authconfig
    USENIS=no
    # 这个档案的内容很好修改!只要将上面 NIS 部分改成 yes 即可:
    USENIS=yes

    /etc/pam.d/system-auth
    # 这个部分也很重要!很容易忘记啦!修改 PAM 的设定档找到如下一行:
    password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
    # 上面可是同一行喔!将他改成:
    password sufficient pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

    /etc/yp.conf
    # 这个是 ypbind 的主要设定文件,主要语法是这样的:
    # domain [NIS领域] server [主机名称]
    # 或者是透过广播,适合用于大网域有多部 NIS 服务器时:
    # domain [NIS领域] broadcast
    domain testnis broadcast

    这样设定完成后,再给他启动 ypbind 即可

    第二种方法:图形界面
    使用命令:authconfig-tui


    第六步:启动服务portmap,ypbind
    #/etc/init.d/portmap start
    #/etc/init.d/ypbind start

    第七步:测试nis客户端
    通过以下命令:ypcat passwd,如果能够输出服务器上普通用户的帐户信息,则说明NIS配置成功。其它测试命令还有yptest,ypwhich -x等。
    (1)yptest
    yptest命令测试数据库内容等所有与NIS相关的信息
    (2)ypwhich
    ypwhich命令主要测试NIS客户端与服务器之间通信使用的是哪些数据库文件
    只使用ypwhich命令只显示NIS主机名
    ypwhich -x则显示NIS客户端与服务器通信使用了哪些数据库文件
    (3)ypcat
    ypcat命令可以查看NIS服务器上使用者帐号及密码信息,也可以查看NIS服务器上的/etc/hosts文件记录哪些主机信息
    ypcat passwd:查看NIS服务器上帐号密码等信息
    ypcat hosts:查看NIS服务器上的/etc/hosts文件记录哪些主机信息
    (4)ypmatch
    ypmatch teamadmin passwd:查询指定用户帐号密码信息
    (5)yppasswd
    客户端可以使用yppasswd命令修改帐号和密码
    注意:密码长度不能少于6位哈~此外使用yppasswd命令可以自动更新NIS数据库中内容。


    NIS辅助服务器配置(与上面基本上差不多,所以就简略了)

    第一步:安装NIS服务器相关软件

    第二步:设置ypserv.conf文件

    第三步:数据同步
    可以在从NIS服务器上使用ypxfr命令同步数据库信息保持数据状态为最新
    命令如下
    ypxfr -h NIS主服务器IP或主机名 数据库文件
    ypxfr -h nis passwd.byname
    ypxfr -h nis passwd.byuid

    第四步:启动服务进行测试

    案例详解

    公司准备在nis.test区域中放置多台服务器,服务器包括samba服务器、邮件服务器、WEB服务器、代理服务器等等。为了方便日常的服务器管理工作,再搭建一台NIS服务器,其IP地址为192.168.85.128,从NIS服务器,其IP地址为192.168.85.129为了方便管理,所有nisdomain区域内的服务器都可以使用admin帐号以及其他管理帐号登录。

    里面涉及到NFT+NIS+AUTOFS三者的联合使用,实现用户家目录的自动挂载

    ★★★★★★★★★★★★★★★★★视频观看地址★★★★★★★★★★★★★★★★★★
    http://www.boobooke.com/v/bbk3440
    http://www.boobooke.com/v/bbk3441
    http://www.boobooke.com/v/bbk3442

    相关文章

    发表评论