NIS服务器学习

Wesley13
• 阅读 844

前提环境:
1、安装的必须的软件包
ypserv,yp-bind,yp-tool

关于包的说明:
ypserv:服务器端必须的软件包
yp-bind:客户端需要的包
yp-tool:与yp相关的命令的包
PS:NIS服务跟NFS服务有些共同之处,都需要启动portmap服务

检查机器是否已安装的包,若没有,就安装相关的包。基本上系统默认已安装的包有yp-bind,yp-tool这两个。
[root@cheng ~]# rpm -qa | grep yp-*
ypbind-1.19-12.el5
yp-tools-2.9-0.1

安装Master服务器
[root@master ~]# rpm -qa | grep yp-serv
[root@master ~]#
[root@master ~]# yum install -y ypserv
安装完ypserv后,系统将会多了一些配置文件:
[root@master ~]# rpm -ql ypserv
/etc/rc.d/init.d/yppasswdd  #这个是客户端修改密码的服务
/etc/rc.d/init.d/ypserv     #ypserv的主要服务
/etc/rc.d/init.d/ypxfrd     #这个不知道是干嘛的
/etc/ypserv.conf    #主要配置文件

配置文件:
/etc/ypserv.conf 这个是主要的配置文件
/etc/hosts    非常重要,每一台主机都需要记录才行
/etc/netgroup 设置信任的主机与域名,这个我个人认为可以实现特定的主机用特定的用户登录的功能。
/var/yp/Makefile 建立与数据库有关的操作设置文件
/etc/sysconfig/network 指定NIS的域名

服务器提供的主要服务:
/usr/sbin/ypserv NIS服务器主要的服务
/usr/sbin/rpc.ypxfrp 用于master/slave主机之间传输数据库的服务
/usr/sbin/rpc.ypasswdd 提供额外的NIS客户端的用户密码修改服务。

与数据库有关的命令方面:
/usr/sbin/yppush  将master的数据库推送到slave上。
/usr/lib/yp/ypinit  这个是用于重新生成数据库
/usr/lib/yp/ypxfr   传送数据库的命令。ypxfr_1perday,ypxfr_1perhour,ypxfr_2perday

按照鸟哥私房菜的指引,做以下实验:
1、三台PC,Master,salve,client
2、配置一个NIS的环境,实现用户家目录的自动挂载
3、实现更新域数据据,普通用户可以自己更改自己的密码

建立一个NIS域
[root@master ~]# nisdomainname test
[root@master ~]# echo “NISDOMAIN=test” >> /etc/sysconfig/network
[root@master ~]# echo “/bin/nisdomainname test” >> /etc/rc.d/rc.local

修改本地的hosts文件
[root@master ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.10.40   master.test
192.168.10.41   slave.test
192.168.10.42   client.test

添加NIS的域名
[root@master ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master.test
NISDOMAIN=test

添加guest用户的一个脚本
[root@master ~]# cat useradd.sh
#!/bin/bash
#userd for add users
for (( i>1; i<100; i++ ))
do
useradd guest$i
echo 123456 | passwd –stdin guest$i
done

编辑NIS的配置文件,允许特定的网络访问NIS服务器
[root@master ~]# vi /etc/ypserv.conf
# 网段                                                            NIS服务器域名    数据库名称                    安全级别
192.168.10.0/255.255.255.0 : test       : *             : none

启动相关的服务
[root@master ~]# service portmap start   #需要启动 portmap服务
[root@master ~]# service ypserv start    #启动NIS的主要服务
[root@master ~]# service yppasswdd start # 启动该服务后,客户端可以自己更新密码了

验证服务:
[root@master ~]# rpcinfo -p localhost     #出现以下内容表明启动成功
程序             版本     协议           端口
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp    947  status
100024    1   tcp    950  status
100004    2   udp    773  ypserv
100004    1   udp    773  ypserv
100004    2   tcp    776  ypserv
100004    1   tcp    776  ypserv
100009    1   udp    785  yppasswdd
[root@master ~]# rpcinfo -u localhost ypserv
程序 100004 版本 1 就绪并等待
程序 100004 版本 2 就绪并等待

生成NIS数据库
[root@master ~]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  master.test 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:  master.test
next host to add:
The current list of NIS servers looks like this:

master.test

Is this correct?  [y/n: y]  y
We need a few minutes to build the databases…
Building /var/yp/test/ypservers…
Running /var/yp/Makefile…
gmake[1]: Entering directory `/var/yp/test’
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/test’

master.test has been set up as a NIS master server.

Now you can run ypinit -s master.test on all slave server.
----------------------------------------------
关于ypinit的选项
OPTIONS
-m     If the local host is the NIS master.(只用于master)

-s     Set up a slave server with the database from master_name (在master上生成一个slave的NIS服务器)
----------------------------------------------

建立完数据库后,需要将服务进行重启!
[root@master ~]# service ypserv restart
停止 YP 服务器的服务:                                     [确定]
启动 YP 服务器的服务:                                     [确定]
[root@master ~]# service yppasswdd restart
停止 YP 口令服务:                                             [确定]
启动 YP 口令服务:                                             [确定]

允许Master\Slave之间的同步
[root@master yp]# vi /var/yp/Makefile
NOPUSH=true

添加相应的slave服务器
[root@master yp]# cat /var/yp/ypservers
master.test
slave.test
[root@master yp]#

配置slave服务器
[root@slave ~]# echo “NISDOMAIN=test” >> /etc/sysconfig/network
[root@slave ~]# nisdomainname test
[root@slave ~]# echo “/bin/nisdomainname test” >> /etc/rc.d/rc.local
[root@slave ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.10.41   slave.test
192.168.10.10   master.test
192.168.10.42   client.test

完成以上工作后,执行同步数据库的操作
[root@slave ~]# /usr/lib/yp/ypinit -s master.test
We will need a few minutes to copy the data from master.test.
Transferring services.byname…
Trying ypxfrd … not running

Transferring rpc.bynumber…
Trying ypxfrd … not running

Transferring passwd.byname…
Trying ypxfrd … not running

Transferring services.byservicename…
Trying ypxfrd … not running

Transferring ypservers…
Trying ypxfrd … not running

Transferring netid.byname…
Trying ypxfrd … not running

Transferring protocols.bynumber…
Trying ypxfrd … not running

Transferring rpc.byname…
Trying ypxfrd … not running

Transferring hosts.byaddr…
Trying ypxfrd … not running

Transferring mail.aliases…
Trying ypxfrd … not running

Transferring passwd.byuid…
Trying ypxfrd … not running

Transferring hosts.byname…
Trying ypxfrd … not running

Transferring protocols.byname…
Trying ypxfrd … not running

Transferring group.byname…
Trying ypxfrd … not running

Transferring group.bygid…
Trying ypxfrd … not running

你会发现了这么多的信息,都提示没ypxfrd没有运行,因此可见要同步数据库还得要运行ypxfrd服务
在主服务器上启动ypxfrd这个服务
[root@master test]# /etc/init.d/ypxfrd start
启动 YP 映射图服务器:                                     [确定]

重新同步数据库
[root@slave ~]# /usr/lib/yp/ypinit -s master.test
We will need a few minutes to copy the data from master.test.
Transferring services.byname…
Trying ypxfrd … success

Transferring rpc.bynumber…
Trying ypxfrd … success

Transferring passwd.byname…
Trying ypxfrd … success

Transferring services.byservicename…
Trying ypxfrd … success

Transferring ypservers…
Trying ypxfrd … success

Transferring netid.byname…
Trying ypxfrd … success

Transferring protocols.bynumber…
Trying ypxfrd … success

Transferring rpc.byname…
Trying ypxfrd … success

Transferring hosts.byaddr…
Trying ypxfrd … success

Transferring mail.aliases…
Trying ypxfrd … success

Transferring passwd.byuid…
Trying ypxfrd … success

Transferring hosts.byname…
Trying ypxfrd … success

Transferring protocols.byname…
Trying ypxfrd … success

Transferring group.byname…
Trying ypxfrd … success

Transferring group.bygid…
Trying ypxfrd … success
slave’s NIS data base has been set up.
If there were warnings, please figure out what went wrong, and fix it.

查看用户的密码文件
[root@slave ~]# ypcat -h slave.test passwd.byname
guest60:$1$DuqvMNPM$qHeWMGE36AeIFbiiVuJML/:560:560::/home/guest60:/bin/bash
guest88:$1$TnjZhKpr$Ju838YqoW8PQD4mkXiE/B/:588:588::/home/guest88:/bin/bash
………省略了其他大量的账户
guest45:$1$VCm8pPqP$rT7YbQOhokIi1Q7wzfmY3/:545:545::/home/guest45:/bin/bash

现在测试一下我们的客户端:
将客户端加入到nis的域里面,然后再测试 autofs的设置部分:

总结一下客户端需要设置的地方:
1、在网络项加入NIS域
/etc/sysconfig/network
添加NISDOMAIN=test
2、修改HOSTS文件
/etc/hosts
192.168.10.42   client.test
192.168.10.41   slave.test
192.168.10.40   master.test

3、增加开机自动加入NIS域
/etc/rc.d/rc.local
/bin/nisdomainname test

4、修改用户密码的认证顺序文件
[root@client ~]# vi /etc/nsswitch.conf
passwd:     files nis
shadow:     files nis
group:      files nis

5、修改/etc/yp.conf客户端配置文件
[root@client ~]# cat /etc/yp.conf
domain test server master.test
domain test server slave.test

6、修改/etc/sysconfig/authconfig这个文件
[root@client ~]# vi /etc/sysconfig/authconfig
USENIS=yes

7、修改系统认证文件
[root@client ~]# vi /etc/pam.d/system-auth
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok nis

修改完成以上7项之后,我们需要重启两个服务
[root@client ~]# service portmap restart
停止 portmap:                                             [确定]
启动 portmap:                                             [确定]
[root@client ~]# service ypbind restart
关闭 NIS 服务:                                                                                                                  [失败]
设置 NIS 域名 test:                                         [确定]
打开 allow_ypbind 的 SELinux 布尔值
关联到 NIS 域:                                                                                                                    [确定]
监听 NIS 域服务器。
[root@client ~]#

--------完成以上配置后,我们可以开始进行测试了----
[root@cheng ~]# ssh guest1@192.168.10.42
guest1@192.168.10.42′s password:
Could not chdir to home directory /home/guest1: No such file or directory
-bash-3.2$
-bash-3.2$
#成功登陆了,但是没有家目录,为什么呢?因为guest1的家目录在master.test上,肯定不会在client这台机器上,那么我们应该如让guest1这个用户可以使用这台机,并且能够获得完整的目录环境呢?
#答案是使用autofs实现NIS用户的家目录自动挂载。

围绕这个思路:
1、要将guest1的家目录共享出来
2、实现客户端的自动挂载

实现这个思路需要:NFS+autofs的支持

将master.test上的home目录给共享出来
[root@master ~]# cat /etc/exports
/home   *(rw)
重启有关服务
[root@master ~]# service nfs restart
关闭 NFS mountd:                                          [确定]
关闭 NFS 守护进程:                                                                                                            [确定]
关闭 NFS quotas:                                          [确定]
关闭 NFS 服务:                                                                                                                    [确定]
启动 NFS 服务:                                                                                                                    [确定]
关掉 NFS 配额:                                                                                                                   [确定]
启动 NFS 守护进程:                                                                                                            [确定]
启动 NFS mountd:                                          [确定]

设置客户端机器上的自动挂载
编辑控制文件
[root@client ~]# vi /etc/auto.master
/home   /etc/auto.misc
配置配置文件
[root@client ~]# vi /etc/auto.misc
*               -fstype=nfs                     192.168.10.40:/home/&
重启服务
[root@client ~]# service autofs restart

验证:
[root@client home]# ll
总计 0
[root@client home]# su – guest
[guest@client ~]$ pwd
/home/guest
[guest@client ~]$

从现在的用户切换到另外一个用户
[guest@client ~]$ su – guest89
口令:
[guest89@client ~]$ pwd
/home/guest89
[guest89@client ~]$
再回到主目录
[root@client home]# ls
guest  guest89

本文出自 “潜入技术的海洋” 博客,请务必保留此出处http://myhat.blog.51cto.com/391263/450347

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这