linux服务之NIS账户管理服务方式

2025-05-21 15:50

本文主要是介绍linux服务之NIS账户管理服务方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教...

一、所需要的软件

  1. yp-tools :提供 NIS 相关的查寻指令功能
  2. ypbind :提供 NIS Client 端的设定软件
  3. ypserv :提供 NIS Server 端的设定软件
  4. rpcbind :就是 RPC 一定需要的数据啊!

注:yp-tools, ypbind 都会主动安装,所以server端只需要安装 ypserv ,而客户端只需要安装ypbind。

查询是否安装 NIS Server

[root@www ~]# rpm -qa ypserv
ypserv-2.31-12.el7.x86_64

二、服务器配置

环境说明:

  • NIS 的域名设置为 vbirdnis
  • NIS master server 的 IP 为 192.168.91.157,主机名为 www.Centos.vbird
  • NIS client 的 IP 为 192.168.91.159,主机名为 clientlinux.centos.vbird

1、安装 NIS 服务

[root@www ~]# yum -y install ypserv

2、设定 NIS 的域名 (NIS domain name)

[root@www ~]# vim /etc/sysconfig/network
 # 不要更改其他既有数据,只要加入底下这几行即可:
 NISDOMAIN=vbirdnis <==设定 NIS 领域名
 YPSERV_ARGS="-p 1011" <==设定 NIS 每次都启动在固定的埠口

3、修改主配置文件

[root@www ~]# vi /etc/ypserv.conf
# 添加如下内容
 *                        : *       : *                : none     <==没有网络限制,如果想做限制,可以在这里做,也可以通过防火墙做限制

注:上述配置说明:

#[主机名/IP] : [NIS 域名] : [可用数据库名称] : [安全限制]
# [主机名/IP] :可以使用 network/netmask 如192.168.100.0/255.255.255.0
 # [NIS 域名] :例如本案例中的 vbirdnis
 # [可用数据库名称]:就是由 NIS 制作出来的数据库名称;
 # [安全限制] :包括没有限制 (none)、仅能使用 <1024 (port) 及拒绝 (deny)
 # 一般来说,你可以依照我们的网域来设定成为底下的模样:
 127.0.0.0/255.255.255.0 : * : * : none
 192.168.100.0/255.255.255.0 : * : * : none
 * : * : * : deny
 # 星号 (*) 代表任何数据都接受的意思。上面三行的意思是,开放 lo 内部接口、开放内部 LAN 网域,且杜绝所有其他来源的 NIS 要求的意思。

4、设置主机名

[root@www ~]# hostnamectl set-hostname www.centos.vbird
[root@www ~]# hostname
www.centos.vbird

5、设定主机名与 IP 的对应 (/etc/hosts)

[root@www ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         ljsocalhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.91.157	www.centos.vbird
192.168.91.159	clientlinux.centos.vbird

6、为了方便管理,把yppasswdd 启动在固定的端口

[root@www ~]# vim /etc/sysconfig/yppasswdd
 YPPASSWDD_ARGS="--port 1012" <==找到这个设定值,修改一下内容成这样!

7、启动 NIS 服务

[root@www ~]# systemctl start ypserv
[root@www ~]# systemctl start yppasswdd

8、如果重新启动 rpcbind

这将导致 ypserv 的注册数据被注销掉。因此,使用如下的动作来检查看看服务有没有在等待中, 要看到如下的『就绪并等待服务』才会是正常的

[root@www ~]# rpcinfo -u localhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting

9、创建的账号

 [root@www ~]# useradd -u 1001 nisuser1
 [root@www ~]# useradd -u 1002 nisuser2
 [root@www ~]# useradd -u 1003 nisuser3
 [root@www ~]# echo password | passwd --stdin nisuser1
 [root@www ~]# echo password | passwd --stdin nisuser2
 [root@www ~]# echo password | passwd --stdin nisuser3

10、建立账号为数据库

[root@www ~]# /usr/lib64/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers.  www.centos.vbird 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:  www.centos.vbird
	next host to add:                     <==按下 ctrl + d
The current list of NIS servers looks like this:

www.centos.vbird

Is this correct?  [y/n: y]  y
We need a few minutes to build the databases...
Building /var/yp/vbirdnis/ypservers...
Running /var/yp/Makefile...
gmake[1]: 进入目录“/var/yp/vbirdnis”
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]: 离开目录“/var/yp/vbirdnis”

www.centos.vbird has been set up as a NIS master server.

Now you can run ypinit -s www.centos.vbird on all slave server.

三、客户端配置

客户端为了方便,使用setup命令安装,如果没有setup命令,后面有如何安装setup命令

[root@localhost ~]# setup

1、选择验证配置

linux服务之NIS账户管理服务方式

2、选择使用NIS

linux服务之NIS账户管理服务方式

3、配置好之前的域名和NIS服务器的地址

linux服务之NIS账户管理服务方式

4、客户端验证

[root@localhost ~]# id nisuser1
uid=1001(nisuser1) gid=1001(jiaofan) 组=1001(jiaofan)
[root@localhost ~]# id nisuser2
uid=1002(nisuser2) gid=1002(nisuser2) 组=1002(nisuser2)
[root@localhost ~]# su - nisuser3
su: 警告:无法更改到 /home/nisuser3 目录: 没有那个文件或目录
-bash-4.2$ 

注:这里说没有家目录,因为客户端确实没有创建家目录,可以结合nfs网络文件服务,把服务端的家目录挂在过来。

如果没有setup命令,如何安装。

  • 1.安装最快镜像插件
yum -y install yum-plugin-fastestmirror
  • 2.安装setuptool
yum -y install setuptool
yum -y install ntsysv
  • 4.安装防火墙设置、网络设置
yum -y install iptables
  • 5.安装防火墙设置
yum -y install system-config-securitylevel-tui
  • 6.安装网络设置
yum -y install system-config-network-tui

四、 NIS client 端的检查命令: yptest, ypwhich, ypcat

1、利用 yptest 检验数据库之测试:

[root@localhost ~]# yptest
Test 1: domainname
Configured domainname is "vbirdnis"

Test 2: ypbind
Used NIS server: www.centos.vbird

Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)

Test 4: yp_first
nisuser1 nisuser1:$6$K0frD0qB9hRudFQ2$gIhQ3qcEzlwr6l1Clz7hAYDVC4ERnH5YGPRKAQGhPNlwmSLgQJKntLq0qEWLt2FrIUzjl76KUk4i10n7Iogrg.:1001:1001::/home/nisuser1:/bin/bash

Test 5: yp_next
nisuser2 nisuser2:$6$ZZqpknoy$iX2olpYKuOGoQGmuFLx4GlNsKiB8XZyPPdeMGPiua4TSFnKhqNFLNnceUQgtlsjjYCmawlFedn5FuvtgQ7rZ1.:1002:1002::/home/nisuser2:/bin/bash
nisuser3 nisuser3:$6$wpxJVOF.$Tfv0OjlWsJHYTEkti7I8YZLiQSq23ZT68Fg7CVOv1NTOtHscImvN7dwD7mL.ZpycDIUpDu3EyXCynGUVPGnLC0:1003:1003::/home/nisuser3:/bin/bash

Test 6: yp_master
wwjavascriptw.centos.vbird

Test 7: yp_order
1644212690

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

Test 9: yp_all
nisuser1 nisuser1:$6$K0frD0qB9hRudFQ2$gIhQ3qcEzlwr6l1Clz7hAYDVC4ERnH5YGPRKAQGhPNlwmSLgQJKntLq0qEWLt2FrIUzjl76KUk4i10n7Iogrg.:1001:1001::/home/nisuser1:/bin/bash
nisuser2 nisuser2:$6$ZZqpknoy$iX2olpYKuOGoQGmuFLx4GlNsKiB8XZyPPdeMGPiua4TSFnKhqNFLNnceUQgtlsjjYCmawlFedn5FuvtgQ7rZ1.:1002:1002::/home/nisuser2:/bin/bash
nisuser3 nisuser3:$6$WPxJVOF.$Tfv0OjlWsJHYTEkti7I8YZLiQSq23ZT68Fg7CVOv1NTOtHscImvN7DWD7mL.ZpycDIUpDu3EyXCynGUVPGnLC0:1003:1003::/home/nisuser3:/bin/bash
1 tests failed

注:Test 3 出现的那个警告信息,那只是说没有该数据库而已~ 该错误是可以忽略的。重点在第 9 个步骤 yp_all 必须要有列出你 NIS server 上头的所有帐户信息,如果有出现账号相关数据的话,那么应该就算验证成功了!

2、利用 ypwhich 检验数据库数量

单纯使用 ypwhich 的时候显示的是『NIS Client 的 domain』名称,而当加入 -x 这个参数时, 则是显示『NIS Client 与 Server 之间沟通的数据库有哪些?』你可以这样测试

[root@localhost ~]# 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@localhost ~]# 

由上面我们可以很清楚的就看到相关的档案啦!这些数据库档案则是放置在我的 NIS Server 的 /var/yp/vbirdnis/* 里面。

3、利用 ypcat 读取数据库内容

除了 yptest 之外,你还可以直接利用 ypcat 读取数据库的内容喔!一般作法是这样:

[root@clientlinux ~]# ypcat [-h nisserver] [数据库名称]
 选项与参数:
 -h nisserver :如果有设定的话,指向某一部特定的 NIS 服务器,
 如果没有指定的话,就以 ypbind 之设定为主;
 数据库名称:亦即在 /var/yp/vbirdnis/ 内的档名啊!例如 passwd.byname
 
 # 读出 passwd.byname 的数据库内容
 [root@clientlinux ~]# ypcat passwd.byname

五、使用者参数修改: yppasswd, ypchfn, ypchsh

到这里NIS server/ client的账号已经同步了,但是,使用者如何在NIS client 修改他自己的登入参数,例如密码、shell 等等?因为 NIS client 是藉由数据库来取得用户的账号密码,那如何在 NIS 客户端处理账号密码的订正?

这也是为何我们需要在 NIS server 启动 yppasswdd 这支服务的主要用意! 因为 yppasswdd 可以接收 NIS client 端传来的密码修改,藉此而处理 NIS server 的 /etc/passwd, /etc/shadow , 然后 yppasswdd 还能够重建密码数据库,让 NIS server 同步更新数据库

那该如何下达指令呢?很简单啊!透过 yppasswd, ypchsh, ypchfn 来处理即可。

这三个指令的对应是:

  • yppasswd:与 passwd 指令相同功能;
  • ypchfn:与 chfn 相同功能;
  • ypchsh:与 chsh 相同功能。

这里仅说明一下 yppasswd 而已。假设你已经登入 NIS client 那部主机, 并且是以 nisuser1 这个使用者登入的,记住,这个用户相关数据仅在 NIS server 上。 接下来,这个使用者可以下达 yppasswd ,如下所示:

[root@clientlinux ~]# grep nisuser android/etc/passwd <==不会出现任何讯息,因
为无此账号
 [root@clientlinux ~]# su - nisuser1 <==直接切换身份看看!
 su: warning: cannot change directory to /home/nisuser1: No such file 
or directory
 -bash-4.1$ id
 uid=1001(nisuser1) gid=1001(nisuser1) groups=1001(nisuser1)
 # 因为我们 client.centos.vbird 仅有帐户信息,并没有用户家目录,
 # 所以就会出现如上的警告,因此才需要用 id 验证,并且需要加挂 NFS 嘛!
 # 仔细看,现在的身份确实是 nisuser1 喔!确实有连上 NIS server 啦!
 
 -bash-4.1$ yppasswd
 Changing NIS account information for nisuser1 on www.centos.vbird.
 Please enter old password: <==这里输入旧密码
 Changing NIS password for nisuser1 on www.centos.vbird.
 Please enter new password: <==这里输入新密码
 Please retype new password: <==再输入一遍
 
 The NIS password has been changed on www.centos.vbird.
 
 -bash-4.1$ exit

这样就更新了 NIS server 上头的 /etc/shadow 以及/var/yp/vbirdnis/passwd.by* 的数据库。

服务端查看是否有改动

[root@www ~]#  ll /var/yp/vbirdnis/
总用量 3152
-rw-------. 1 root root 135680 2月   7 15:22 group.bygid
-rw-------. 1 root root 135680 2月   7 15:22 group.byname
-rw-------. 1 root root 136192 2月   7 15:22 hosts.byaddr
-rw-------. 1 root romyZjAUfkrot 136448 2月   7 15:22 hosts.byname
-rw-------. 1 root root 136960 2月   7 15:22 mail.aliases
-rw-------. 1 root root 136704 2月   7 15:22 netid.byname
-rw-------. 1 root root 136448 2月   7 15:23 passwd.byname
-rw-------. 1 root root 136448 2月   7 15:23 passwd.byuid
-rw-------. 1 root root 142336 2月   7 15:22 protocols.byname
-rw-------. 1 root root 139008 2月   7 15:22 protocols.bynumber
-rw-------. 1 root root 140288 2月   7 15:22 rpc.byname
-rw-------. 1 root root 137984 2月   7 15:22 rpc.bynumber
-rw-------. 1 root root 547840 2月   7 15:22 services.byname
-rw-------. 1 root root 857856 2月   7 15:22 services.byservicename
-rw-------. 1 root root 135680 2月   7 15:22 ypservers
[root@www ~]# tail /var/log/messages
Feb  7 15:23:05 www rpc.yppasswdd[2443]: update nisuser1 (uid=1001) from host 192.168.91.159 successful.
[root@www ~]# 

六、报错

在建立账号为数据库执行/usr/lib64/yp/ypinit -m的错误一:

gmake[1]: *** No rule to make target `/etc/aliases', needed by `mail.aliases'. Stop.
 gmake[1]: Leaving directory `/var/yp/vbirdnis'
 make: *** [target] Error 2
 Error running Makefile.
 Please try it by hand.

错误一解决办法:缺少什么档案,就 touch 他就是了!

 [root@www ~]# touch /etc/aliases

错误二:

如果是如下的错误,那可能是因为:

  • 你的 ypserv 服务没有顺利启动,请利用 rpcinfo 检查看看;
  • 你的主机名与 IP 没有对应好,请检查 /etc/hosts
gmake[1]: Entering directory `/var/yp/vbirdnis'
 Updating passwd.byname...
 failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
 failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
 ....(底下省略)....

要注意啊,如果你的用户密码有变动过,那么你就得要重新制作数据库,重新启动 ypserv 及 yppasswdd

总结

编程

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于linux服务之NIS账户管理服务方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154709

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py