快速命令

# Server和Client设置NIS域名
nisdomainname nis_server
echo 'NISDOMAIN=nis_server' >> /etc/sysconfig/network

# Server写入ypserv配置文件
echo -e '127.0.0.0/255.255.255.0:*:*:none\n192.168.2.0/255.255.255.0:*:*:none\n*:*:*:deny'>> /etc/ypserv.conf

# 数据库初始化
/usr/lib64/yp/ypinit -m # Server涉及的服务
systemctl start rpcbind
systemctl start yppasswdd
systemctl start ypserv
# Clinet配置
authconfig-tui
# Client涉及的服务
systemctl start rpcbind
systemctl start ypbind

NIS

当我们拥有多台Linux服务器时,账号管理就成为一个比较头大的问题了,比如在全部的服务器上新建、删除账户和修改密码,一台一台ssh登录去操作显然不是个好主意,账户同步是个大问题。为此NIS诞生了。

NIS全称Network Information Service,主要功能是对主机账号系统等系统信息提供集中的管理。

Server和Client

NIS有两种角色,Server和Client

Server会将自己的以下文件作成为DBM数据库档案:

  • /etc/passwd用户基本信息:用户名、UID、GID、$HOME、$SHELL
  • /etc/group用户组信息:GID和群内成员
  • /etc/hosts域名:域名和IP解析
  • /etc/services守护进程所对应的端口
  • /etc/protocolsTCP/IP封包协定
  • /etc/rpc每种RPC服务所对应的程序号码
  • /var/yp/ypserversNIS服务器所提供的数据库。

当这些文件发生改变时候,需要在Client中生效,要再重新生成DBM数据库。

Client在有用户登录时,会先验证本机保存的用户,如果没有记录,会再向Server搜寻数据库里面数据做为验证用。

  • yp-tools :提供 NIS 相关的查寻指令功能
  • ypbind :Client提供绑定设定套件,系统中获取 NIS 域名,并使用 RPC 连接到服务器上
  • ypserv :为Server提供NIS响应
  • rpcbind :NIS和NFS类似的,也需要rpc来作为中转

Slave和Server架构

一般情况下我们一台Server对应为若干台Client服务,当我们有大量的服务器需要为大量Client服务的时候,一台Server可能从响应的服务质量可能就不是那么美好了的。这个时候我们可以额外配置台Slave作为从服务器。Server和Slave之间会进行数据的同步,从而再为Client提供服务。

不过除非有超过一百台的Linux主机,不然其实一个Server也是没问题的。

NIS_Server

安装软件

Server需要安装的软件有rpcbind、ypserv、yp-tools。ypbind为Client使用的,可以选择性安装。

#rpm系列的linux
sudo yum -y install ypserv yp-tools rpcbindypbind
# 这个方法是只下载,如果你的Server配置过nfs,可以很方便的为Clinent服务器安装吧哈哈
# yumdownloader --resolve --destdir=/root/yum ypserv ypbind yp-tools rpcbind
# deb系列的linux
sudo apt -y install nis

设置NIS域

直接用nisdomainname命令来设置

# 后面nisdomainname+域名,设置域名
[root@server_197 ~]# nisdomainname nis_server
# 单纯nisdomainname为返回当前域名
[root@server_197 ~]# nisdomainname

系统重新启动后也生效需要/etc/sysconfig/network中追加NISDONAIN=<name>

[root@server_197 ~]# echo 'NISDOMAIN=nis_server' >> /etc/sysconfig/network
[root@server_197 ~]# cat /etc/sysconfig/network
# Created by anaconda
NISDOMAIN=nis_server

添加NIS授权

相关的权限配置文件在/etc/ypserv.conf。可以先看一下里面的内容。

[root@server_197 ~]# cat /etc/ypserv.conf | grep -v '#'
files: 30 #这里的代表会读到内存中的数据库数量,一般情况30个是足够
xfr_check_port: yes
# 与master/slave 有关,将同步更新的数据库比对所使用的端口,放置于<1024内

# Host(允许的主机或者ip)    : Domain(NIS域): Map(可用的数据库名字) : Security(安全限制)
* : * : shadow.byname : port
* : * : passwd.adjunct.byname : port

重点介绍一下后面查询的权限格式,使用冒号隔成四部分:

Host:Domain:Map:Security

# Host                     : Domain  : Map              : Security
#
# * : * : passwd.byname : port
# * : * : passwd.byuid : port # Not everybody should see the shadow passwords, not secure, since
# under MSDOG everbody is root and can access ports < 1024 !!!
* : * : shadow.byname : port
* : * : passwd.adjunct.byname : port
  • Host为Client的ip或者网段,用来划分服务对象的

    • 127.0.0.0/255.255.255.0
  • Domain为NIS域名
    • 一般情况都直接写*号以用来代表全部
  • Map为可用数据库
    • 就是由NIS制作出来的数据库名称
  • Security为权限限制
    • 没有限制(none)、仅能使用<1024 (port)及拒绝(deny)

依据具体情况我们可以这样写。

# 本机可以访问全部domain、map(数据库)、none(没有限制)
127.0.0.0/255.255.255.0 :* :* :none
# 192.168.2.0/24可以访问全部domain、map(数据库)、none(没有限制)
192.168.2.0/255.255.255.0 :* :* :none
# 其他ip全部deny(拒绝),和防火墙规则,这条规则是至关重要的,相当于是默认规则吧
* :* :* :deny

偷懒就echo加上去吧哈哈。

 echo -e '127.0.0.0/255.255.255.0:*:*:none\n192.168.2.0/255.255.255.0:*:*:none\n*:*:*:deny'>> /etc/ypserv.conf

启动服务

需要启动rpcbind、yppasswd、ypserv,切记,先启动rpcbind。随便来个开机自启动啦

systemctl start rpcbind && systemctl enable rpcbind
systemctl start yppasswdd && systemctl enable yppasswdd
systemctl start ypserv && systemctl enable ypserv

账户操作

既然NIS的初衷的共享用户的,在生成数据库之前,先要把新建用户删除用户之类的操作完成,再生成数据库。每一次操作都要重新生成数据库和重新启动服务。

[root@server_197 ~]# adduser -s /bin/bash -g test -d /home/test test2022
# 创建个用户随便复习一下adduser
# -s 指定shell路径
# -g 所在组
# -d 设置home目录位置
[root@server_197 ~]# passwd test2022
Changing password for user test2022.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

数据库生成

执行/usr/lib64/yp/ypinit -m初始化(如果你安装的软件包是32位,对应的应该是/usr/lib/yp/ypinit -m),其中会等待我们输入next host to add,直接Ctrl+D跳过即可,再y确认

[root@server_197 ~]# /usr/lib64/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. server_197 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: server_197
next host to add:
The current list of NIS servers looks like this: server_197 Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/nis_server/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/nis_server'
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_server' server_197 has been set up as a NIS master server. Now you can run ypinit -s server_197 on all slave server.

确保目前的rpcbind、yppasswdd、ypserv服务已经在正常的工作了。没有就systemctl启动一下。

更新后再重新启动一次吧

systemctl start rpcbind
systemctl start yppasswdd
systemctl start ypserv

NIS_Client

现在来配置Client。

安装软件

和Server不相同,不需要安装ypserv。

安装rpcbind、yp-tools、ypbind

# rpm
yum -y install ypbind yp-tools rpcbind # 其实我没有在deb上跑过,不太确定是不是
apt -y install nis

设置NIS域

这里和Server配置一样,domain要一致,否则无法使用。

直接用nisdomainname命令来设置

# 后面nisdomainname+域名,设置域名
[root@server_149 ~]# nisdomainname nis_server
# 单纯nisdomainname为返回当前域名
[root@server_149 ~]# nisdomainname

系统重新启动后也生效需要/etc/sysconfig/network中追加NISDONAIN=<name>

[root@server_149 ~]# echo 'NISDOMAIN=nis_server' >> /etc/sysconfig/network
[root@server_149 ~]# cat /etc/sysconfig/network
# Created by anaconda
NISDOMAIN=nis_server

设置连接

在目录含中输入,可以进入半图形化的设置界面。

authconfig-tui

上下或tab键可以控制光标移动,在NIS位置选择,即按空格。

F12下一页,光标移动到Next选择也可以

输入一下Domain和Server,即之前设置的nisdomainname和NIS_Server的IP地址。

完成配置后

重新启动一下服务即可。

systemctl start rpcbind
systemctl start ypbind

测试

在Client中尝试登录之前的新建的test2022用户

[root@client_149 ~]# su test2022
bash: /home/test/.bashrc: Permission denied
bash-4.2$

当然目前要注意HOME目录是Server自己的HOME目录,Client自然是没有啦,可以使用NFS来挂载,具体可以看我主页的另外一篇文章。

Linux的NIS配置的更多相关文章

  1. 在Linux虚拟机下配置tomcat

    1.到Apache官网下载tomcat http://tomcat.apache.org/download-80.cgi 博主我下载的是tomcat8 博主的jdk是1.8 如果你们的jdk是1.7或 ...

  2. 在Linux虚拟机下配置jdk的环境变量

    1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  3. Linux网络属性配置

    目录 IP地址分类 如何将Linux主机接入到网络中 网络接口的命名方式 ifcfg系列命令 如何配置主机名 如何配置DNS服务器指向 iproute2系列命令 Linux管理网络服务 永久生效配置路 ...

  4. 阿里云服务器Linux CentOS安装配置(零)目录

    阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...

  5. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  6. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定

    阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...

  7. 阿里云服务器Linux CentOS安装配置(七)域名解析

    阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...

  8. 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署

    阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...

  9. 阿里云服务器Linux CentOS安装配置(五)jetty配置、部署

    阿里云服务器Linux CentOS安装配置(五)jetty配置.部署 1.官网下载jetty:wget http://repo1.maven.org/maven2/org/eclipse/jetty ...

随机推荐

  1. 数字图像处理-基于matlab-直方图均匀化,傅立叶变换,图像平滑,图像锐化

    直方图均匀化 任务:用MATLAB或VC或Delphi等实现图像直方图均匀化的算法. clc;clear;close all; % 清除工作台 % path(path,'..\pics'); % 设置 ...

  2. word-制作三线表

    找一个表格或插入一个表格, 找到 [设计] [新建表格样式] [将格式应用于: 整个表格] 点击"框线设置"按钮,在弹出的下拉菜单中分别选择 [上框线] 和 [下框线],然后分别设 ...

  3. 梯度下降算法实现原理(Gradient Descent)

    概述   梯度下降法(Gradient Descent)是一个算法,但不是像多元线性回归那样是一个具体做回归任务的算法,而是一个非常通用的优化算法来帮助一些机器学习算法求解出最优解的,所谓的通用就是很 ...

  4. Python教程:执行cmd命令

    我们通常可以使用os模块的命令进行执行cmd 方法一:os.system def system(*args, **kwargs): # real signature unknown "&qu ...

  5. 用 PyQt5 快速构建一个简单的 GUI 应用

    1. 介绍 Python GUI 常用的 3 种框架是:Tkinter.wxpython.PyQt5 PyQt5 基于 Qt,是 Python 和 Qt 的结合体,可以用 Python 语言编写跨平台 ...

  6. p_b_p_b 杂题选讲

    [ARC119F] AtCoder Express 3 [ARC117F] Gateau 考虑二分答案,对前缀和建差分约束 \(\text{check}\) ,但是用 \(\text{spfa}\) ...

  7. VS code 远程连接服务器步骤

    ①安装VS code,并连接远程服务器(本地也需要有ssh).参考 ②免密钥登录设置,参考 具体步骤:WIN+R -->cmd, 输入ssh-keygen,然后一直Enter,最终生成公钥和私钥 ...

  8. 异常概念&异常体系和异常分类

    异常概念 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

  9. 边缘计算 KubeEdge+EdgeMash

    简介 KubeEdge是面向边缘计算场景.专为边云协同设计的业界首个云原生边缘计算框架,在 Kubernetes 原生的容器编排调度能力之上实现了边云之间的应用协同.资源协同.数据协同和设备协同等能力 ...

  10. Markdown 的基本使用

    Markdown基本语法 1.标题 //标题的写法 #一级标题 ##二级标题 ###三级标题 //以此类推... 效果: 一级标题 二级标题 三级标题 2.分割线 使用三个或以上-或*表示,并且改行不 ...