Linux的NIS配置

快速命令

Server和Client设置NIS域名
nisdomainname nis_server
echo 'NISDOMAIN=nis_server' >> /etc/sysconfig/network
Server的ypserv固定端口echo 'YPSERV_ARGS=-p 820' >> /etc/sysconfig/network
Server写入/etc/ypserv.conf配置文件
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 rpcbind ypbind
这个方法是只下载,如果你的Server配置过nfs,可以很方便的为Clinent服务器安装吧哈哈# yumdownloader --resolve --destdir=/newnfs/yum ypserv ypbind yp-tools rpcbind# rpm -Uvh --force --nodeps /newnfs/yum/*rpm
deb系列的linuxsudo apt -y install nis

设置NIS域

直接用nisdomainname命令来设置

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

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

随便固定一下端口 YPSERV_ARGS=”-p 820″

[root@server_197 ~]# echo -e 'NISDOMAIN=nis_server\nYPSERV_ARGS="-p 820"' >> /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 有关,将同步更新的数据库比对所使用的端口,放置于# 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)、仅能使用

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

本机可以访问全部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

Linux的NIS配置

需要启动 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确认。如果有slava从属服务器,运行 ypinit -s server_197

Linux的NIS配置
[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 .
        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

防火墙

之前我们在/etc/sysconfig/network固定为820端口,所以,除了rpc使用的111端口还需要放行 820/tcp和udp。iptables同理。

firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-port=820/tcp
firewall-cmd --permanent --add-port=820/udpfirewall-cmd --reload

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=

[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位置选择,即按空格。

Linux的NIS配置

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

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

Linux的NIS配置

完成配置后

重新启动一下服务即可。

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来挂载,具体可以看我主页的另外一篇文章。
YPSERV_ARGS=”-p 820″

Original: https://www.cnblogs.com/alittlemc/p/16642595.html
Author: alittlemc
Title: Linux的NIS配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578145/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • shell bash-shell

    bash shell中的命令替换,cmd或者$(cmd)。 bash shell中的变量赋值,直接name = var; ( bash中的变量赋值不能中间有空格) 变量引用时,$n…

    Linux 2023年5月28日
    094
  • opencv

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月14日
    0106
  • 运算符重载限制

    p387 5.表 11.1 中的大多数运算符都可以通过成员或非成员函数进行重载,但下面的运算符只能通过成员函数进行重载。 =:赋值运算符。 ():函数调用运算符。 []:下标运算符…

    Linux 2023年6月13日
    093
  • windows系统cmd切换盘符路径命令失效

    问题描述:比如当我在C盘想切换到D盘的某个文件夹路径下时 只是输出了那个路径 但是并没有真的切换 这时候需要再多操作一步就会成功了 Original: https://www.cn…

    Linux 2023年6月14日
    086
  • freePBR的UE4材质合集

    我手动下载了freepbr.com上的所有ue4材质,放到百度云上分享给大家。 freePBR的UE4材质合集 想开个新坑了。但工欲善其事必先利其器。于是我手动下载了freepbr…

    Linux 2023年6月6日
    094
  • FinalShell—一体化服务器管理软件(SSH客户端)

    下面附上一些截图和官方连接: 官网:http://www.hostbuf.com/ FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运…

    Linux 2023年5月28日
    076
  • 如何提高团队开发质量

    年轻的时候去面过一个相对于当时我的比较高端的管理岗位,当时的我情况是,开发经验相对丰富, 但管理经验还欠缺。对方当时面临一个具体的问题。 “我们最近生产上,出现了一个比…

    Linux 2023年6月13日
    077
  • 线程池如何保证核心线程一直存活

    转载请注明出处: 查看 ThreadPoolExecutor 类中的 getTask 方法,这个方法可以保持核心线程在没有任务的时候也可以一直处于存活状态 核心在于 workQue…

    Linux 2023年6月14日
    0154
  • Linux之HTTPS

    一、HTTPS介绍 1.1 概述 为什么需要使用HTTPS,因为HTTP不安全,当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所…

    Linux 2023年6月14日
    092
  • 操作系统实战45讲笔记- 05 CPU工作模式:程序执行的三种模式

    实模式 实模式又称实地址模式,实,即真实,这个真实分为两个方面,一个方面是运行真实的指令,对指令的动作不作区分,直接执行指令的真实功能,另一方面是发往内存的地址是真实的,对任何地址…

    Linux 2023年6月7日
    081
  • 解决word插入新图片后原有图片题注的交叉引用错乱的问题

    引言 在日常工作和生活中,我们经常使用word来撰写文档、论文。为了更好地管理文档中的图片以及在正文中引用图片标题,需要借助题注来实现。通过题注,可以在正文中交叉引用图片,并为引用…

    Linux 2023年6月7日
    0142
  • Java基础系列–07_String、StringBuffer和StringBuilder

    String类(1)字符串:字符串是 常量;它们的值在 创建之后不能更改,存储在堆中。如果字符串多次赋值,其实是每次重新赋值的时候程序都先在内存中寻找已开辟的空间是否存在该值;如果…

    Linux 2023年6月7日
    076
  • 设计模式之模板方法模式(TemplateMethod)

    代码是用java写的 看了本java书发现他的思想确实是先进!!! 主要还是继承和抽象方法的一些应用看代码吧,我不喜欢扯淡,是干啥的百度都有。 意图:定义一个操作中的算法的骨架,而…

    Linux 2023年6月7日
    086
  • 实用!这17个运维技巧,收藏起来随时备用~

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0105
  • linux 系统迁移到lvm分区

    对于普通分区磁盘空间不够,而采用lvm分区,原来系统进行迁移或者备份还原。 dd命令用于将整个硬盘进行备份,包括uuid,适用于对对整个物理盘的备份 tar 备份可以对整个系统进行…

    Linux 2023年6月14日
    089
  • Linux基础学习(三)

    [root@ct7 ~]# grep -vc “/sbin/nologin” /etc/passwd [root@ct7 ~]# grep -v “/sbin/nologin” /…

    Linux 2023年6月8日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球