开发者社区> 天飞.h> 正文

NIS学习笔记

简介: 平台:rhel5.4_x86 软件包:ypserv,ypbind,yp-tools 服务器:172.16.3.244 辅助:172.16.3.248 客户端:172.16.3.245 防火墙关闭 [root@rhel172_16_3_244 ~]# yum search yp |grep ^yp ypbind.i386 : 把 NIS 客户绑定到 NIS 域的 NIS 守护进程。
+关注继续查看

平台:rhel5.4_x86
软件包:ypserv,ypbind,yp-tools
服务器:172.16.3.244
辅助:172.16.3.248
客户端:172.16.3.245
防火墙关闭

[root@rhel172_16_3_244 ~]# yum search yp |grep ^yp
ypbind.i386 : 把 NIS 客户绑定到 NIS 域的 NIS 守护进程。
yp-tools.i386 : NIS (或 YP) 客户程序。
ypserv.i386 : NIS (网络信息服务)服务器。
创建一个测试用户:
[root@rhel172_16_3_244 ~]# useradd talen -m
[root@rhel172_16_3_244 ~]# passwd talen
Changing password for user talen.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

安装软件包:
做为服务器
[root@rhel172_16_3_244 ~]# yum install  ypserv yp-tools -y
做为客户端
[root@rhel172_16_3_244 ~]# yum install yp-tools ypbind -y

设置NIS域名
[root@rhel172_16_3_244 ~]# vim /etc/sysconfig/network
NISDOMAIN=nis
重起服务器后生效。临时生效可以使用domainname命令
[root@rhel172_16_3_244 ~]# domainname nis
[root@rhel172_16_3_244 ~]# domainname
nis
与NIS有关的服务
ypbind             0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
yppasswdd    0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭    客户端开启修改域密码权限
ypserv             0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭    NIS必须开启的服务
ypxfrd             0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭    主辅域服务器同步数据
[root@rhel172_16_3_244 ~]# service portmap start
Starting portmap:                                          [  OK  ]
[root@rhel172_16_3_244 ~]# netstat -natp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name    
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      5808/portmap
[root@rhel172_16_3_244 ~]# chkconfig ypserv on
[root@rhel172_16_3_244 ~]# service ypserv start
启动 YP 服务器的服务:                                     [确定]
如果有辅助服务器,开启ypxfrd服务
[root@rhel172_16_3_244 ~]# service ypxfrd start
启动 YP 映射图服务器:                                     [确定]

产生NIS数据库文件/var/yp/Makefile
[root@rhel172_16_3_244 ~]# vim /var/yp/Makefile
其中比较重要的是all:NIS要配置的数据
# If you don't want some of these maps built, feel free to comment
# them out from this list.

all:  passwd group hosts rpc services netid protocols mail \
        # netgrp shadow publickey networks ethers bootparams printcap \
        # amd.home auto.master auto.home auto.local passwd.adjunct \
        # timezone locale netmasks
       
初始化NIS数据库
[root@rhel172_16_3_244 ~]# /usr/lib/yp/ypinit --help
usage:
  ypinit -m
  ypinit -s master

where -m is used to build the data bases on a master NIS server,
and -s is used for a slave data base. master must be an existing
reachable NIS server.
由于本机是主服务器,加上-m选项
[root@rhel172_16_3_244 ~]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  rhel172_16_3_244 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 .
    next host to add:  rhel172_16_3_244    这里只有本机
    next host to add:                      输入CTRL+D
The current list of NIS servers looks like this:

rhel172_16_3_244

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

rhel172_16_3_244 has been set up as a NIS master server.

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


此时在/var/yp目录下生成了域nis的数据文件。
[root@rhel172_16_3_244 ~]# ls -l /var/yp/*
-rw-r--r-- 1 root root 16669 2008-08-11 /var/yp/Makefile
-rw-r--r-- 1 root root   185 2006-07-13 /var/yp/nicknames
-rw-r--r-- 1 root root    17 08-26 14:26 /var/yp/ypservers

/var/yp/binding:
总计 0

/var/yp/nis:
总计 2196
-rw------- 1 root root   12418 08-26 14:27 group.bygid
-rw------- 1 root root   12419 08-26 14:27 group.byname
-rw------- 1 root root   12535 08-26 14:27 hosts.byaddr
-rw------- 1 root root   12549 08-26 14:27 hosts.byname
-rw------- 1 root root   13174 08-26 14:27 mail.aliases
-rw------- 1 root root   13092 08-26 14:27 netid.byname
-rw------- 1 root root   12484 08-26 14:27 passwd.byname
-rw------- 1 root root   12483 08-26 14:27 passwd.byuid
-rw------- 1 root root   29211 08-26 14:27 protocols.byname
-rw------- 1 root root   14573 08-26 14:27 protocols.bynumber
-rw------- 1 root root   16384 08-26 14:27 rpc.byname
-rw------- 1 root root   14236 08-26 14:27 rpc.bynumber
-rw------- 1 root root  766110 08-26 14:27 services.byname
-rw------- 1 root root 1470490 08-26 14:27 services.byservicename
-rw------- 1 root root   12376 08-26 14:27 ypservers
[root@rhel172_16_3_244 ~]# netstat -nap |grep ypserv
tcp        0      0 0.0.0.0:830                 0.0.0.0:*                   LISTEN      6161/ypserv        
udp        0      0 0.0.0.0:827                 0.0.0.0:*                               6161/ypserv


配置客户端
[root@rhel172_16_3_245 ~]# yum install ypbind yp-tools -y

[root@rhel172_16_3_245 ~]# chkconfig ypbind on
[root@rhel172_16_3_245 ~]# service ypbind start
Error: NIS domain name is not set.                         [FAILED]
[root@rhel172_16_3_245 ~]# vim /etc/sysconfig/network
NISDOMAIN=nis
[root@rhel172_16_3_245 ~]# domainname nis
[root@rhel172_16_3_245 ~]# domainname
nis
[root@rhel172_16_3_245 ~]# service ypbind start
Binding to the NIS domain:                                 [  OK  ]
Listening for an NIS domain server.rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
[root@rhel172_16_3_245 ~]# service portmap status
portmap is stopped
[root@rhel172_16_3_245 ~]# service portmap start
Starting portmap:                                          [  OK  ]
[root@rhel172_16_3_245 ~]# netstat -natp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name    
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      5808/portmap

[root@rhel172_16_3_245 ~]# telnet 172.16.3.244 111    远程portmap端口是通的。
Trying 172.16.3.244...
Connected to 172.16.3.244 (172.16.3.244).
Escape character is '^]'.
[root@rhel172_16_3_245 ~]# rpcinfo -p 本机rpc注册OK
   程序 版本 协议   端口
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    827  ypserv
    100004    1   udp    827  ypserv
    100004    2   tcp    830  ypserv
    100004    1   tcp    830  ypserv
[root@rhel172_16_3_245 ~]# rpcinfo -p 172.16.3.244    远程服务器OK
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    827  ypserv
    100004    1   udp    827  ypserv
    100004    2   tcp    830  ypserv
    100004    1   tcp    830  ypserv

[root@rhel172_16_3_245 ~]# echo 'domain nis server 172.16.3.244' >> /etc/yp.conf
[root@rhel172_16_3_245 ~]# echo 'domain nis server 172.16.3.248' >> /etc/yp.conf
[root@rhel172_16_3_245 ~]# service ypbind start
Binding to the NIS domain:                                 [  OK  ]
Listening for an NIS domain server.
也可以使用文本模式的配置工具
[root@rhel172_16_3_245 ~]# authconfig-tui
Stopping portmap:                                          [  OK  ]
Starting portmap:                                          [  OK  ]
Shutting down NIS services:                                [  OK  ]
Binding to the NIS domain:                                 [  OK  ]
Listening for an NIS domain server.

[root@rhel172_16_3_245 ~]# yptest -u talen
Test 1: domainname
Configured domainname is "nis"

Test 2: ypbind
Used NIS server: rhel172_16_3_244

Test 3: yp_match
talen:$1$hMJnBx70$3vBLoe3b6YpFiY1LH.ESz.:501:501::/home/talen:/bin/bash

Test 4: yp_first
sky sky:$1$lnUnTVK1$LxsUjGrGZvNJhGUWimpyZ/:500:500:skymobi:/home/sky:/bin/bash

Test 5: yp_next
talen talen:$1$hMJnBx70$3vBLoe3b6YpFiY1LH.ESz.:501:501::/home/talen:/bin/bash

Test 6: yp_master
rhel172_16_3_244

Test 7: yp_order
1314343321

Test 8: yp_maplist
protocols.byname
rpc.bynumber
hosts.byaddr
services.byname
group.bygid
group.byname
passwd.byname
rpc.byname
netid.byname
services.byservicename
hosts.byname
protocols.bynumber
ypservers
passwd.byuid
mail.aliases

Test 9: yp_all
sky sky:$1$lnUnTVK1$LxsUjGrGZvNJhGUWimpyZ/:500:500:skymobi:/home/sky:/bin/bash
talen talen:$1$hMJnBx70$3vBLoe3b6YpFiY1LH.ESz.:501:501::/home/talen:/bin/bash
All tests passed

[root@rhel172_16_3_245 ~]# ypwhich     查询在哪个域注册
rhel172_16_3_244
[root@rhel172_16_3_245 ~]# ypwhich -m    查询NIS对应数据
protocols.byname rhel172_16_3_244
rpc.bynumber rhel172_16_3_244
hosts.byaddr rhel172_16_3_244
services.byname rhel172_16_3_244
group.bygid rhel172_16_3_244
group.byname rhel172_16_3_244
passwd.byname rhel172_16_3_244
rpc.byname rhel172_16_3_244
netid.byname rhel172_16_3_244
services.byservicename rhel172_16_3_244
hosts.byname rhel172_16_3_244
protocols.bynumber rhel172_16_3_244
ypservers rhel172_16_3_244
passwd.byuid rhel172_16_3_244
mail.aliases rhel172_16_3_244
[root@rhel172_16_3_245 ~]# 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"
查询数据库的内容:
[root@rhel172_16_3_245 ~]# ypcat passwd
sky:$1$lnUnTVK1$LxsUjGrGZvNJhGUWimpyZ/:500:500:skymobi:/home/sky:/bin/bash
talen:$1$hMJnBx70$3vBLoe3b6YpFiY1LH.ESz.:501:501::/home/talen:/bin/bash
ypcat如果查询量大的话会造成网络拥挤,可以使用ypmatch来对比数据
[root@rhel172_16_3_245 ~]# ypmatch talen passwd
talen:$1$hMJnBx70$3vBLoe3b6YpFiY1LH.ESz.:501:501::/home/talen:/bin/bash

更新数据库
如果服务器更改了数据,如新添加一个用户,NIS并没有更新,会造成客户端无法找到此用户
[root@rhel172_16_3_244 ~]# make -C /var/yp/
make: Entering directory `/var/yp'
gmake[1]: Entering directory `/var/yp/nis'
Updating netid.byname...
gmake[1]: Leaving directory `/var/yp/nis'
make: Leaving directory `/var/yp'


添加辅助NIS
为防止只有一台NIS服务器带来的单点故障问题,可以使用多台辅助NIS容错,同时还有负载均衡的作用
[root@rhel172_16_3_248 ~]# yum install ypserv yp-tools -y
[root@rhel172_16_3_248 ~]# vi /etc/sysconfig/network
# vim /etc/sysconfig/network
NISDOMAIN=nis
[root@rhel172_16_3_248 ~]# domainname nis
[root@rhel172_16_3_248 ~]# service portmap start
Starting portmap:                                          [  OK  ]
[root@rhel172_16_3_248 ~]# service ypserv start
Starting YP server services:                               [  OK  ]
[root@rhel172_16_3_248 ~]# /usr/lib/yp/ypinit -s 172.16.3.244
[root@rhel172_16_3_248 ~]# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    870  ypserv
    100004    1   udp    870  ypserv
    100004    2   tcp    873  ypserv
    100004    1   tcp    873  ypserv
[root@rhel172_16_3_248 ~]# rpcinfo -p 172.16.3.244
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    827  ypserv
    100004    1   udp    827  ypserv
    100004    2   tcp    830  ypserv
    100004    1   tcp    830  ypserv
[root@rhel172_16_3_248 ~]# /usr/lib/yp/ypinit -s rhel172_16_3_244
We will need a few minutes to copy the data from rhel172_16_3_244.
Transferring protocols.byname...
Trying ypxfrd ... success

Transferring rpc.bynumber...
Trying ypxfrd ... success

Transferring hosts.byaddr...
Trying ypxfrd ... success

Transferring services.byname...
Trying ypxfrd ... success

Transferring group.bygid...
Trying ypxfrd ... success

Transferring group.byname...
Trying ypxfrd ... success

Transferring passwd.byname...
Trying ypxfrd ... success

Transferring rpc.byname...
Trying ypxfrd ... success

Transferring netid.byname...
Trying ypxfrd ... success

Transferring services.byservicename...
Trying ypxfrd ... success

Transferring hosts.byname...
Trying ypxfrd ... success

Transferring protocols.bynumber...
Trying ypxfrd ... success

Transferring ypservers...
Trying ypxfrd ... success

Transferring passwd.byuid...
Trying ypxfrd ... success

Transferring mail.aliases...
Trying ypxfrd ... success


rhel172_16_3_248's NIS data base has been set up.
If there were warnings, please figure out what went wrong, and fix it.

At this point, make sure that /etc/passwd and /etc/group have
been edited so that when the NIS is activated, the data bases you
have just created will be used, instead of the /etc ASCII files.
然后再回到主服务器
1,修改NOPUSH
[root@rhel172_16_3_244 ~]# sed -i 's/NOPUSH=true/NOPUSH=false/' /var/yp/Makefile    注意,一些注释内容也会更改
2,增加辅助NIS清单
[root@rhel172_16_3_244 ~]# echo 'rhel172_16_3_248' >>/var/yp/ypservers
[root@rhel172_16_3_244 ~]# make -C /var/yp/




[root@rhel172_16_3_248 ~]# service ypxfrd start
Starting YP map server:                                    [  OK  ]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
2010年SQLite3学习笔记之五(进阶SQLite3中级编程知识线路图)
进阶SQLite3中级编程知识线路图 引言: 小老虎多多的针对SQLite3中级编程的知识要点。 一.编码转换 UTF8编码与GB2312 编码的类型相互转换; 二.安全保护 即对SQLite3进行安全保护,即密码保护; 三.
910 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20272 0
虚拟化学习笔记-Linux 系统在虚拟机迁移中的技术难点
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396683 磁盘分区名被硬编码。
1395 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23541 0
UNIX环境高级编程学习笔记(十)为何 fork 函数会有两个不同的返回值【转】
转自:http://blog.csdn.net/fool_duck/article/details/46917377 以下是基于 linux 0.11 内核的说明。 在init/main.c第138行, 在move_to_user_mode()之后,进程0通过fork()产生子进程,实际就是进程1(init进程)。
1024 0
虚拟化学习笔记-基础知识
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396678 ...
1195 0
【Android学习笔记】设置项目桌面icon
近来项目处于测试阶段,工作少了许多,就装了个最新的Android Studio,想写一下安卓。新建好项目,想设置个桌面的icon。我先准备好自己的icon图片,然后复制粘贴到res/mipmap-hdpi文件夹下,然后在AndroidManifest中将icon的地址改为我自己图片的命名,运行之后,发现模拟器所有icon都是圆的,我的图片是方形的,显示的样子为一个圆的白色里面套着我的方形icon,然后就上网查了一下安卓icon适配的问题。
917 0
2010年SQLite学习笔记之三
                                                       2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/test.
961 0
+关注
天飞.h
脚踏实地,仰望天空. https://talenhao.github.io/
260
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载