Centos7中配置NIS:用户账号管理

NIS:网络信息服务

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

模式:C/S模式
ypbind是定义NIS服务器的客户端进程,一旦确定了服务器位置,客户端绑定到了服务器上,所有客户的查询都发往NIS服务器。
ypserv是回答客户端查询的服务器进程。
相关的软件:
yp-tools #提供NIC相关查询命令功能
ypbind #提供NIC客户端的设置软件
ypserv #提供NIC服务端的设置软件
rpcbind #这是RPC必需的软件
/etc/ypserv.conf定义NIS客户端是否有可登录权限
/etc/sysconfig/network可以在这个文件夹内指定NIS网路
/var/yp/Makefile建立数据库有关的操作文件
NIS的主要服务:
/usr/sbin/ypservNIS提供的主要服务
/usr/sbin/rpc.yppasswdd提供额外的NIS客户端的用户密码修改服务,通过这个服务,NIS客户端可以直接修改在NIS服务器上的密码。yppasswd命令
与账号密码数据库有关的命令:
/usr/lib64/yp/ypinit建立数据库的命令,经常使用
/usr/bin/yppasswd让用户修改服务器上的密码

一、安装NIS服务器(Server端192.168.2.21)

设置主机名
方法一:hostnamectl set-hostname david
方法二:修改配置文件 vim /etc/hostname 删除旧主机名,输入新主机名
设置完后可以用hostname确认
关闭防火墙和防火墙的开机启动
systemctl stop firewalld
systemctl disable firewalld.service
1、安装软件包 yp-tools
yum install ypserv ypbind nfs-utils rpcbind
2、设置NIS域名
nisdomainname testserver.com
如果不想每次重启都设置则需要修改network文件
vim /etc/sysconfig/network
添加一行NISDOMAIN=testserver.com
设置开机自动加入NIS域
vim /etc/rc.d/rc.local
添加一行/bin/nisdomainname testserver.com
3、修改配置文件
在vim /etc/hosts末尾加上
192.168.2.21    david
192.168.2.25    client
修改vim /etc/ypserv.conf
把最后一行的注释去掉,也就是说通配所有的主机,加入所有的域,map所有的东西,none是表示没有安全性,这一项其实是个安全选项,可以通过这个控制权限
* : * : * : none
为了安全,你可以这样写:
127.0.0.0/255.255.255.0   : * : * : none
192.168.2.0/255.255.255.0 : * : * : none
*                         : * : * : deny

4、启动NIS服务
systemctl start rpcbind           (service rpcbind start)
systemctl start yppasswdd
systemctl start ypserv
5、在home下新建目录nis_users(用于nfs共享)
然后新增用户user1,user2并指定home目录和设置密码
mkdir /home/nis_users
useradd -d /home/nis_users/user1 -m user1 (-d设置用户主目录,-m用户主目录不存在则创建)
6、初始化数据库
/usr/lib64/yp/ypinit -m
按Ctrl + D,再按y确认
//每次更新账户信息后都需要更新数据库
//cd /var/yp     再    make
或者 //make -C /var/yp/      
当执行了ypinit -m之后,所有的主机上面的账号相关档案会被转成数据库档案, 这些数据库会被放置到/var/yp/"nisdomainname"当中

 【注意】:/var/yp/目录下会产生一个你自己设定的nisdomainname目录,一定要保证master,slave,client中的nisdomainname设置的一致
现在执行下面的命令,并可以看到用户口令表
getent passwd
7、通过NFS共享/home/nis_users目录
(i)、首先禁用selinux
vim /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled,保存退出。
输入setenforce 0立即生效
用getenforce查看SELinux的状态(或sestatus)
(ii)、vim /etc/exports  
添加一行,格式为
共享目录                  网络地址 (rw, sync,no_root_squash)
(no_root_squash:允许客户端root用户操作)
/home/nis_users 192.168.2.0/24(rw,sync,no_root_squash)
(iii)、然后重启nfs,并设置开机启动
systemctl restart nfs
systemctl enable nfs
(iv)、现在在本机执行exportfs命令,应该可以看到下面的输出
/home/nis_users
如果执行完以上步骤一切正常,那么NIS服务器的NFS就配置好了
 

二、Client(客户端192.168.2.25)

设置主机名
hostnamectl set-hostname client
1、安装软件包
yum install authconfig\*   sssd\*  krb5\*  autofs   ypbind
//yum install -y ypbind yp-tools
2、设置nis域名
nisdomainname testserver.com
如果不想每次重启都设置则需要修改network文件
vim /etc/sysconfig/network
添加一行NISDOMAIN=testserver.com
设置开机自动加入NIS域
vim /etc/rc.d/rc.local
添加一行/bin/nisdomainname testserver.com
3、修改配置文件
在/etc/hosts末尾加上
192.168.2.21    david
192.168.2.25    client
4、用图形界面配置NIS(推荐II)
I、执行system-config-authentication.选择Enable NIS然后点Configure按照我们刚才的设置填入NIS 域和NIS服务器的地址然后点OK确定,并退出
现在在客户端执行
getent passwd
应该可以输出服务器上的口令表
II、或者authconfig-tui
用方向键移动光标,空格键确定
第一个界面左边选择Use NIS,右边保持默认,然后next

输入nis的域名(testserver.com)和master的IP地址(192.168.3.10),选择OK 

5、启动服务并设置开机启动
systemctl start rpcbind
systemctl start ypbind
systemctl enable ypbind
输入yptest测试,如果能看到master上的用户则表明client的nis设置成功


6、编辑autofs配置文件(自动挂载)
vim /etc/auto.master    //(注释掉所有以前的配置,加入)
格式为
挂载点          配置文件
/home/nis_users /etc/auto.nis

7、配置文件
vim  /etc/auto.nis
格式为
服务端用户名     服务端IP:挂载用户的目录
*            192.168.2.21:/home/nis_users/&
注:*匹配所有用户名,&匹配用户路径
8、保存退出后重启autofs,并设置开机启动
systemctl restart autofs
systemctl enable autofs 
9、用su命令登陆并进行测试
su - user1
pwd


 成功了。

三、排错、挂载文件

1、若出现无法更改到用户目录,则说明文件系统没有挂载上。


 重新挂载即可。
mount -t nfs 192.168.2.21:/home/nis_users /home/nis_users/
查看挂载情况

2、若出现:can't yp_bind: Reason: 未绑定域

systemctl stop rpcbind
systemctl start rpcbind
systemctl status rpcbind

3、若出现:无法与ypbind通讯

systemctl start ypbind 

4、若出现Warning: Stopping rpcbind.service, but it can still be activated by: rpcbind.socket


 关闭ypbind、和rpcbind服务,再开启即可。
systemctl stop rpcbind
systemctl stop ypbind
systemctl start rpcbind
systemctl start ypbind

5、若出现su - 能登录普通用户,但ssh远程登录普通用户显示密码错误

解决:有些文件里域名没彻底修改

6、登录到普通用户前面只显示一个$(即shell类型问题 sh/dash/bash)


原因是创建的用户使用的shell是sh,可以通过vim /etc/passwd中查看并修改
xujb:x:1004:1004::/home/xujb:/bin/sh
将sh改成常用的bash即可
xujb:x:1004:1004::/home/xujb:/bin/bash

四、客户端步骤4的图形界面的其它办法

i、将USENIS=no改为USENIS=yes
vim /etc/sysconfig/authconfig

ii、修改vim /etc/yp.conf加入下面的设置:定义NIS客户端是否有可登录权限
    (domain  域名  server  服务器地址或主机名)

iii、在passwd、shadow、group以及hosts行的files后面都添加上nis。
vim /etc/nsswitch.conf

iv、在password  sufficient一行中,在shadow后面插入nis。
vim /etc/pam.d/system-auth

 五、nis主从配置(基于以上完成的优化)

nis master:192.168.102.11    主机名:david
nis slave: 192.168.102.12    主机名:client1
nis client: 192.168.102.13    主机名:client2

1、master服务器端的设置

(1)为了让master与slave之间可以传输数据,需要对master做一点小小的改动。进入到/var/yp目录下,修改Makefile文件,把NOPUSH的值修改为false即可
vim /var/yp/Makefile

(2)然后告诉master需要把数据推送给哪些slave节点。【创建/var/yp/ypservers文件】,并向其中添加slave节点名称,进程如下操作:
vim /var/yp/ypservers 

(3)传输数据时会用到ypxfrd服务,该服务运行时需要访问/var/yp/securenets文件,用于安全性检查,即验证可以在哪些服务器之间进行数据同步。
执行如下操作【创建文件】并添加内容:
vim /var/yp/securenets    (255.255.255.0  192.168.102.0) 

 (4)设置了slave服务,那么master节点最好也开启ypbind服务,确保在执行make后,更新的数据可以主动发送给slave节点上。
这里只提及需要修改/etc/yp.conf,/etc/nsswitch.conf,/etc/pam.d/system-auth等文件

 (5)开启服务,并设置开机自启动
systemctl start ypbind ypxfrd
systemctl enable ypbind ypxfrd 
(6)更新数据库:
cd /var/yp
make  

2、slave节点配置

(1)配置主要配置文件vim /etc/ypserv.conf
127.0.0.0/255.255.255.0      : *       : *                : none
192.168.102.0/255.255.255.0  : *       : *                : none
*                            : *       : *                : deny

(2) 对于slave节点,既作为服务端,又作为客户端,所以不仅需要配置/etc/ypserv.conf文件,还需要配置客户端需要配置的文件,例如/etc/yp.conf等文件。ypbind是客户端服务,/etc/yp.conf是ypbind的配置文件。
yp.conf的配置如下:
vim /etc/yp.conf

 (3)启动服务,并设置开机自启动(启动前确认rpcbind服务启动了已经) 
systemctl start ypserv ypxfrd ypbind
systemctl enable ypserv ypxfrd ypbind 
(4)slave节点不需要自己创建数据库,而是应该同步master节点的数据库。
初次同步时,需要执行以下命令:
/usr/lib64/yp/ypinit -s david

3、客户端的设置

vim /etc/yp.conf
 

4、测试

(1)停掉nis master
systemctl stop ypserv

 (2)在客户端查看用户
ypcat passwd

依然可以查到,说明nis主从服务搭建成功

5、排错

(1)master服务器端执行make时报错

主要原因是执行make时调用yppush工具需要用到ypbind服务,而master节点没有开启ypbind服务。如果不使用高可用,即不设置slave服务,那么master节点可以不启用ypbind,毕竟所有的账号信息都在master节点上。但是,如果设置了slave服务,那么master节点最好也开启ypbind服务,确保在执行make后,更新的数据可以主动发送给slave节点上。
(2)客户端查看用户ypcat passwd出错
No such map passwd.byname. Reason: 无法于为此域服务的服务器绑定

说明客户端没有在vim /etc/yp.conf里添加slave节点

  

 

 

posted @ 2022-05-06 22:12  惊小呆520  阅读(1920)  评论(0编辑  收藏  举报