搭建NIS服务器实现用户集中化认证

简介:

搭建NIS服务器实现用户集中化认证

NIS服务器概述

NIS网络信息服务模式C/S 模式NIS是集中控制几个系统管理数据库的网络产品。NIS简化了UNIXLINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd。管理员只需要简单的使用维护NIS服务器的文件即可。 

    Linux系统中用户地域分两类: 本地用户, 远程用户(NIS,LDAP,AD) 

ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所有客户端的查询都发往NIS服务器。 

ypserv是回答客户端查询的服务器进程。 

 

使用的场景:

wKiom1kNKxihJwO2AABzeWTzMUI720.png 

 在一个大型的网域当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的账号与密码时,如果能够有一部账号主控服务器来管理网域中所有主机的账号, 当其他的主机有用户登入的需求时,才到这部主控服务器上面要求相关的账号、密码等用户信息, 如此一来,如果想要增加、修改、删除用户数据,只要到这部主控服务器上面处理即可, 这样就能够降低重复设定使用者账号的步骤了!

 

NIS工作流程

    NIS服务的应用结构分为NIS服务器和NIS客户机两种角色,NIS服务器集中维护用户的帐号信息(数据库)供NIS客户机进行查询,用户登录任何一台NIS客户机都会从NIS服务器进行登录认证,可实现用户帐号的集中管理。
    1.Nis Master先将帐号密码相关文件制作成数据库文件;
    2.若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。
    3.NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案; 
    4.若在 NIS Client 本机找不到相关的账号数据,才开始向整个 NIS 网域的主机广播查询; 
    5.每部 NIS server (不论 master/slave) 都可以响应,基本上是『先响应者优先』

一:实验目标 

实战:配置NIS服务器实现集中化认证。 

实战:在客户端自挂载NIS用户家目录 

二:实验环境

NIS服务端  :xuegod63   IP:192.168.1.63

Web服务端 :xuegod64   IP:192.168.1.64

客户端     xuegod62   IP:192.168.1.62

 

三:实验代码

1、环境搭建

1)NIS服务器:xuegod63: 

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/ypserv-2.19-22.el6.x86_64.rpm

#NIS服务的主程序包。

[root@xuegod63 ~]# service iptables stop

2)NIS客户端:xuegod64

[root@xuegod64 ~]# rpm -ivh /mnt/Packages/ypbind-1.20.4-29.el6.x86_64.rpm #NIS客户端,ypind进程包

[root@xuegod64 ~]# rpm -ivh /mnt/Packages/yp-tools-2.9-12.el6.x86_64.rpm #NIS客户端工具用来查询数据库信息。

[root@xuegod63 ~]# rpm -qf `which yppasswd ` #使用yppasswd可以远程修改NIS服务器用户的密码

yp-tools-2.9-12.el6.x86_64

[root@xuegod64 ~]# service iptables stop

NIS服务器相关文档

/etc/ypserv.conf

NIS主配置文件,可以控制NIS客户端是否可以访问NIS服务器

/etc/hosts

记录主机和IP地址对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要存放每一台NIS客户端的主机记录。

 

实战:配置NIS服务器实现集中化认证

通过NIS服务器可以使用帐号nisuser1,登录公司的samba服务器、邮件服务器、WEB服务器等

认证过程:

wKioL1kNKyWBCOQMAAB7hiCc-kw629.png 

NIS服务器的域名:NIS

服务端主机名:xuegod63.cn

客户端主机名:xuegod64.cn

1、安装NIS服务器 :xuegod63

1)创建nis用户专用目录(方便后期实现:NIS+autofs的功能

[root@xuegod63 ~]# mkdir  /home/nishome/

[root@xuegod63 ~]# useradd -d /home/nishome/nisuser1 nisuser1  

[root@xuegod63 ~]# useradd -d /home/nishome/nisuser2 -s /sbin/nologin nisuser2 #后期测试是否可以使用此帐号能否登录其它系统

[root@xuegod63 ~]#  echo 123456 | passwd --stdin nisuser1

[root@xuegod63 ~]#  echo 123456 | passwd --stdin nisuser2

2)设置NIS域名

NIS是会通过域名来分辨不通账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名才行。

[root@xuegod63 ~]# nisdomainname

(none)

方法1:永久生效,需要重启机器

[root@xuegod63 ~]# vim /etc/sysconfig/network #在文件最后,添加以下内容

cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=xuegod63.cn

NISDOMAIN=xuegod.cn

[root@xuegod63 ~]# service network restart

方法2:临时生效

[root@xuegod63 ~]# nisdomainname xuegod.cn #临时生效,和hosname用法一样

[root@xuegod63 ~]# nisdomainname

xuegod.cn

3)配置hosts文件主机名与IP的对应

[root@xuegod63 ~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.63 xuegod63.cn

192.168.1.64 xuegod64.cn 

4)设置/etc/ypserv.conf主配置文件

[root@xuegod63 ~]#vim /etc/ypserv.conf 

配置:允许所有内网客户端可以连接NIS服务器,除此之外的客户端都拒绝连接。

如图:

wKioL1kNKzKADlaFAACVTDT-yJ0575.png ypserv.conf文件是逐行解释执行,所以要注意设置顺序

参数 格式为:

Host:

定客户端,可以定具体IP地址,也可以挃定一个网段

Domain:

设置NIS域名,这里的NIS域名和DNS中的域名并没有关系。

Map:

设置可用数据库名称,可以用*代替所有数据库

Security:

安全性设置。主要有none、port和deny三种参数设置。

none:

没有任何安全限制,可以连接NIS服务器。

port:

只允许小于1024以下的端口连接NIS服务器。

deny:

拒绝连接NIS服务器。

5)建立NIS数据库

1首先要启ypserv服务,否则建立NIS数据库会报错

[root@xuegod63 ~]# service ypserv start

2)创建数据库:

[root@xuegod63 ~]# ll /usr/lib64/yp/ypinit #使用这个命令,必须写绝对路径

-rwxr-xr-x 1 root root 4088 Aug 31 2011 /usr/lib64/yp/ypinit

[root@xuegod63 ~]# echo $PATH #没有在PATH中

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

[root@xuegod63 conf]# /usr/lib64/yp/ypinit -m  # 这里必须是全路径,m - master

next host to add: xuegod63.cn

next host to add: #Ctrl+D结束输入

Is this correct? [y/n: y] y 

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

Building /var/yp/xuegod.cn/ypservers...

Running /var/yp/Makefile..# 生成哪个NIS数据库文件 

gmake[1]: Leaving directory `/var/yp/xuegod.cn'

xuegod63.cn has been set up as a NIS master server.

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

 

[root@xuegod63 ~]# ls /var/yp #生成一个xuegod.cn 目录。

binding Makefile nicknames xuegod.cn ypservers

说明: 每次手更改数据库内容后,(比如更新用户密码)  就需要执行: /usr/lib64/yp/ypinit  -m

6)重启服务: 不重启,否则添加新数据将无法生效

[root@xuegod63 ~]# service ypserv restart

[root@xuegod63 ~]# /etc/init.d/yppasswdd restart

[root@xuegod63 ~]# chkconfig ypserv on

[root@xuegod63 ~]# chkconfig yppasswdd on

2、配置客户端:xuegod64

1安装NIS客户端具

[root@xuegod64 ~]# rpm -ivh /mnt/Packages/ypbind-1.20.4-29.el6.x86_64.rpm [root@xuegod64 ~]# rpm -ivh /mnt/Packages/yp-tools-2.9-12.el6.x86_64.rpm

2加入域

[root@xuegod64 ~]# system-config-authentication #此命令需要在图形界面执行

User Account Configuration出选择NIS,填入相应的NIS信息,如下图

wKioL1kNKz2jKRDFAAGH72BUiQ4634.png 

点击Apply之后,如下图测试:

wKiom1kNK0izdLhQAAEezAoHSTM404.png 

注:这里要是绑定失败,应该是防火墙的问题,要将防火墙关闭的

1查看执行system-config-authentication后,修改的内容: 

[root@xuegod64 Desktop]# cat /etc/sysconfig/network

HOSTNAME=xuegod64.cn

NETWORKING=yes

NISDOMAIN=xuegod.cn 

[root@xuegod64 Desktop]#

[root@xuegod64 Desktop]# vim /etc/nsswitch.conf # 修改密码验证方式

33 passwd: files nis

34 shadow: files nis

35 group: files nis

3、测试登录

1)xuegod63上远程登录:

[root@xuegod63 ~]# ssh nisuser1@192.168.1.64

nisuser1@192.168.1.64's password:

Could not chdir to home directory /home/nishome/nisuser1: No such file or directory

-bash-4.1$

2)在xueogd64上测试:

[root@xuegod64 Desktop]# su - nisuser1

su: warning: cannot change directory to /home/nishome/nisuser1: No such file or directory

-bash-4.1$

#能使用NIS帐号登录系统,说明配置成功。

3)查看NIS客户服务ypbind的配置文件

[root@xuegod64 ~]# tail /etc/yp.conf #定了NIS服务器地址 ,查看最后一行,在客户端/etc/yp.conf文件中设置NIS服务器的主机名和NIS域名

domain xuegod.cn server 192.168.1.63

4)重新启动ypbind服务

[root@xuegod64 Desktop]# service ypbind restart 重新启劢ypbind服务

[root@xuegod64 Desktop]# chkconfig ypbind on 设置开机启劢ypbind服务

5)测试修改密码

yppasswd 客户端可以使用yppasswd命令修改帐号和密码

注意:密码长度能少于6位。此外使用yppasswd命令可以自劢更新NIS数据库中内容。:通过yppasswd1修改密码

[root@xuegod63 ~]# ssh nisuser1@192.168.1.64

-bash-4.1$ yppasswd

Changing NIS account information for nisuser1 on xuegod63.cn.

Please enter old password:123456

Changing NIS password for nisuser1 on xuegod63.cn.

Please enter new password:123456789

Please retype new password:123456789

The NIS password has been changed on xuegod63.cn.

2)使用新密码登录:

[root@xuegod64 ~]# ssh nisuser1@192.168.1.64

nisuser1@192.168.1.64's password: 123456789

Last login: Thu Apr 16 20:11:20 2015 from xuegod64.cn

Could not chdir to home directory /home/nishome/nisuser1: No such file or directory

-bash-4.1$

方法二: 

[root@xuegod63 ~]# ssh nisuser1@192.168.1.64

-bash-4.1$ passwd #直接使用passwd命令,新密码要复杂一些

 

 

实战:在客户端实现挂载NIS用户家目录

描述: xuegod63 配置NFS,把NIS用户的家目录共享出去, NIS用户在客户端登录,使用autofs自挂载NIS用户家目录。

:wKioL1kNK1WwpOw2AACArYcY6Q0258.png

1、xuegod63 配置NFS

1)安装 xuegod63,配置NFS:

[root@xuegod63 ~]# rpm -ivh /mnt/Packeges/nfs-utils-1.2.3-15.el6.x86_64

[root@xuegod63 ~]# ls /home/nishome/

nisuser1 nisuser2

[root@xuegod63 ~]# vim /etc/exports #写入以下内容

/home/nishome 192.168.1.0/255.255.255.0(rw,sync)

2)启动服务并设置开机自启动

[root@xuegod63 ~]# /etc/init.d/nfs restart  

[root@xuegod63 ~]# showmount -e 192.168.1.63

Export list for 192.168.1.63:

/home/nishome 192.168.1.0/255.255.255.0、

[root@xuegod63 ~]# chkconfig nfs on

2、xuegod64 所有的NIS客户端,安装autofs

1)安装autofs

[root@xuegod64 Desktop]# rpm -qf /etc/init.d/autofs

autofs-5.0.5-39.el6.x86_64

[root@xuegod64 Desktop]# yum install -y autofs

2)配置autofs

[root@xuegod64 Desktop]# vim /etc/auto.master #autofs服务主配置文件

 /home/nishome  /etc/auto.nishome  #/home/nishome 挂载点

#如果要自挂载/home/nishome,就去找/etc/auto.nishome这个配置文件。

3)修改配置文件

[root@xuegod64 ~]# vim /etc/auto.nishome  

* -rw 192.168.1.63:/home/nishome/& # 目下的所有文件,

#autofs支持挂载目录使用通配符*表示,而网络路径中的用户名使用&表示 如果进入本地的/home/nishome中,(这个前缀已经在刚才的/etc/auto.master中挃定了),就会把192.168.1.63上/home/nishome/上对应的目录挂过来。

4)重启服务并开机启动: 

[root@xuegod64 ~]# /etc/init.d/autofs restart

[root@xuegod64 ~]# chkconfig autofs on

3、测试: 

1)Xuegod63上测试远程登录

[root@xuegod63 ~]# ssh nisuser1@192.168.1.64

nisuser1@192.168.1.64's password: 123456

Last login: Thu Apr 16 22:04:25 2015 from xuegod63.cn

[nisuser1@xuegod64 ~]$

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

Nis不仅仅是做集中化认证,还有其他的作用

#在不同的用户家目录下放不同的软件和工具: 登录不同帐号,就可以拥有对应的软件或脚本

[root@xuegod63 ~]# echo " cp -rv /var/www/html /tmp/" > /home/nishome/nisuser1/auto-back.sh

[root@xuegod63 ~]# chmod +x !$

chmod +x /home/nishome/nisuser1/auto-back.sh

1nisuser1作为专门备份用户: 

[root@xuegod63 ~]# ssh nisuser1@192.168.1.64

nisuser1@192.168.1.64's password:

[nisuser1@xuegod64 ~]$ ./auto-back.sh

`/var/www/html' -> `/tmp/html'

`/var/www/html/index.html' -> `/tmp/html/index.html'

2 mount 挂载nfs文件:

[root@xuegod64 ~]# mount 192.168.1.63:/home/nishome  /opt/

[root@xuegod64 ~]# ls /opt/

nisuser1 nisuser2 










本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1922604,如需转载请自行联系原作者

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
XML Java 数据库
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
面试项目说实现了一个后端多线程网络服务器框架应该怎样写
|
网络安全 开发工具
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
树莓派公网服务器实现frp内网穿透
|
网络协议
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
354 0
自建内网穿透服务器替换TeamViewer和向日葵,实现远程控制
|
存储 算法 安全
分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法
通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成。通信双方通信前共同拟定一个密钥,不向第三方公开,发送前加密和接受后解密都由此密钥完成。即钥匙如果泄露,将暴露自己的全部信息。
|
数据安全/隐私保护
分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法
在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫·惠勒与罗杰·尼达姆。这项技术最初于1994年提交给鲁汶的快速软件加密的研讨会上,并在该研讨会上演讲中首次发表。
|
存储 缓存 NoSQL
分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
|
C# 容器
分布式服务器框架之Server.Common库中实现 秒级定时器
定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动
分布式服务器框架之Server.Common库中实现 秒级定时器
|
NoSQL MongoDB 数据库
分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
YFUniqueEntity是数据库中的结构,GetUniqueID函数中会根据Type和自增步长去数据库中寻找该类型的当前ID是多少,然后会用当前的Id去加上步长,把更新后的新ID插入到MongoDB中记录着ID的那张表里。
|
NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
YFMongoDBModelBase类是个模板类,对模板参数进行了约束YFMongoEntityBase,必须要继承YFMongoEntityBase
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换