NIS
NIS

1. Introduction
NIS(Network Information Service),是可以集中控制多个系统并管理数据库的网络服务。在某个网络中多台Linux主机都需要设定相同的帐号时,可以搭建一台NIS Server来管理该网域中的帐号密码,只需要在NIS Server 上维护用户账号数据,其他主机在加入NIS域后可直接使用NIS Server上的帐号登录。
2. NIS的相关组件
| 服务器端文件名 | 档案内容 |
|---|---|
| /etc/passwd | 用户账号、UID、GID、家目录所在、Shell 等等 |
| /etc/group | 群组数据 |
| /etc/hosts | 主机名与IP的映射 |
| /etc/services | 每一种服务 (daemons) 所对应的端口号 (port number) |
| /etc/protocols | 基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等 |
| /etc/rpc | 每种 RPC 服务器所对应的程序号码 |
| /var/yp/ypservers | NIS 服务器所提供的数据库 |
| /etc/netgroup | 网络群组的定义与使用 |
2.1 服务端
2.1.1 配置文件
| 配置文件名 | 文件内容 |
|---|---|
| /etc/ypserv.conf | 主配置文件,可规范NIS客户端是否可登入的权限 |
| /etc/hosts | 主机名与IP的映射 |
| /etc/netgroup | 组数据与GID的对应 |
| /etc/sysconfig/network | 指定NIS的网域 (nisdomainname) |
| /var/yp/Makefile | 与建立数据库有关动作的配置文件 |
2.1.2 主要服务
| 主要服务名 | 功能 |
|---|---|
| /usr/sbin/ypserv | NIS服务器的主服务 |
| /usr/sbin/rpc.ypxfrd | Master与Slave之间传输数据库 |
| /usr/sbin/rpc.yppasswd | NIS客户端可以通过yppasswd指令直接修改NIS服务器上的密码 |
2.1.3 数据库相关指令
| 相关指令位置 | 功能 |
|---|---|
| /usr/lib64/yp/ypinit | 建立数据库,(32位系统则是/usr/lib/yp/ypinit) |
| /usr/sbin/yppush | Master 推送数据库至Slave |
| /usr/lib/yp/ypxfr | 传送数据库的指令 |
2.2 客4户端
2.2.1 配置文件
| 配置文件名 | 文件内容 |
|---|---|
| /etc/hosts | 主机名与IP的映射 |
| /etc/yp.conf | ypbind的主配置文件,设定NIS Server |
| /etc/nsswitch.conf | 重要的配置文件,设定帐号密码等信息 |
| /var/yp/Makefile | 与建立资料库有关的配置文件的查询顺序 |
2.2.2主要指令
| 相关指令名 | 功能 |
|---|---|
| /usr/bin/yppasswd | 更改客户端登录用户在NIS服务器上的密码 |
| /usr/bin/ypchsh | 更改客户端登录用户默认登录shell |
| /usr/bin/ypchfn | 更改客户端登录用户的finger信息 |
3. NIS环境
3.1 NIS所需的软件包
- yp-tools:提供 NIS 相关的查寻指令功能,默认已安装
- ypbind:提供 NIS Client 端的设定软件,默认已安装
- ypserv:提供 NIS Server 端的设定软件
- portmap:这是 RPC必须的软件! // portmap:111,NIS、NFS 都是依赖于portmap服务;6.0/7.0 版本用rpcbind取代portmap服务
3.2 NIS Server
Master:先将帐号密码相关文件制作成数据库文件,并提供给Slave来更新;
Slave:以Master的数据库作为本身的数据库来源,Slave亦可以主动前往Master取得更新;
若有帐号密码变动时,需要重新制作数据库文件并重新同步Master/Slave。
[root@NIS-Master ~]# yum install -y ypserv
mkdir /nishome
useradd -d /nishome/user1 user1
useradd -d /nishome/user2 user2
useradd -d /nishome/user3 user3
useradd -d /nishome/user4 user4
useradd -d /nishome/user5 user5
echo 123456 | passwd --stdin user1
echo 123456 | passwd --stdin user2
echo 123456 | passwd --stdin user3
echo 123456 | passwd --stdin user4
echo 123456 | passwd --stdin user5
set nisdomainname
vim /etc/sysconfig/network
nisdomain=www.nis.com
[root@NIS-Master ~]# vim /etc/rc.d/rc.local
/bin/nisdomainname www.nis.com
[root@NIS-Master ~]# nisdomainname www.nis.com
[root@NIS-Master ~]# nisdomainname
www.nis.com
set firewalld
systemctl stop firewalld
setenforce 0
systemctl start ypserv.service
systemctl status ypserv.service
systemctl enable ypserv.service
生成NIS数据库,将服务器上的用户文件加载成数据库文件后,该服务器上的所有用户名都将用作客户端身份认证;每次添加用户之后,都需要重新生成NIS数据库
[root@NIS-Master ~]# /usr/lib64/yp/ypinit -m
NIS用户数据库
[root@NIS-Master ~]# ll /var/yp/www.nis.com/
total 3192
-rw-------. 1 root root 136192 Jan 24 13:34 group.bygid
-rw-------. 1 root root 136192 Jan 24 13:34 group.byname
-rw-------. 1 root root 136192 Jan 24 13:34 hosts.byaddr
-rw-------. 1 root root 136448 Jan 24 13:34 hosts.byname
-rw-------. 1 root root 136960 Jan 24 13:34 mail.aliases
-rw-------. 1 root root 136704 Jan 24 13:34 netid.byname
-rw-------. 1 root root 136960 Jan 24 13:34 passwd.byname
-rw-------. 1 root root 136960 Jan 24 13:34 passwd.byuid
-rw-------. 1 root root 142336 Jan 24 13:34 protocols.byname
-rw-------. 1 root root 139008 Jan 24 13:34 protocols.bynumber
-rw-------. 1 root root 140288 Jan 24 13:34 rpc.byname
-rw-------. 1 root root 137984 Jan 24 13:34 rpc.bynumber
-rw-------. 1 root root 561408 Jan 24 13:34 services.byname
-rw-------. 1 root root 881152 Jan 24 13:34 services.byservicename
-rw-------. 1 root root 135680 Jan 24 13:34 ypservers
3.3 NIS Client
NIS Client 登录时,先查询其本的 /etc/passwd, /etc/shadow 等文件; 若在 NIS Client 本机找不到相关的账号数据,才开始向NIS server请求, NIS Master/Slave皆可以响应请求。
yum install -y ypbind
setup
-bash: setup: command not found // 没有setup命令工具配套的组件
yum install -y setuptool
yum install -y ntsysv
yum install -y system-config-securitylevel-tui
yum install -y system-config-network-tui
yum install -y authconfig-gtk
yum install -y system-config-keyboard
setup
#CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$7 - Base - 163.com
baseurl=https://mirrors.aliyun.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$7 - Updates - 163.com
baseurl=https://mirrors.aliyun.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$7 - Extras - 163.com
baseurl=https://mirrors.aliyun.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$7 - Plus - 163.com
baseurl=https://mirrors.aliyun.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
3.4 测试验证
客户端本地没有user1-5用户,但是id user1-5 可见
[root@NIS-Client ~]# id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)
[root@NIS-Client ~]# id user2
uid=1002(user2) gid=1002(user2) groups=1002(user2)
[root@NIS-Client ~]# id user3
uid=1003(user3) gid=1003(user3) groups=1003(user3)
[root@NIS-Client ~]# id user4
uid=1004(user4) gid=1004(user4) groups=1004(user4)
[root@NIS-Client ~]# id user5
uid=1005(user5) gid=1005(user5) groups=1005(user5)
[root@NIS-Client ~]# id user6
id: user6: no such user
/etc/passwd 里没有user1-5用户信息
[root@NIS-Client ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
NIS Client 登录时,优先在本机的/etc/passwd, /etc/shadow文件下查找用户信息; 若本机没有相关的账号数据,则向NIS Server 请求账号。
[root@NIS-Client ~]# su - user1
su: warning: cannot change directory to /nishome/user1: No such file or directory
-bash-4.2$
[root@NIS-Client ~]# cd /nishome
-bash: cd: /nishome: No such file or directory
[root@NIS-Client ~]# find / -name *user1*
缺少以下隐藏文件
[root@NIS-Master ~]# ll /nishome/user1/ -a
total 12
drwx---rwx. 2 user1 user1 62 Jan 24 12:59 .
drwxr-xr-x. 7 root root 71 Jan 24 12:59 ..
-rw-r--r--. 1 user1 user1 18 Jul 27 2021 .bash_logout
-rw-r--r--. 1 user1 user1 141 Jul 27 2021 .bash_profile
-rw-r--r--. 1 user1 user1 376 Jul 27 2021 .bashrc
3.5 共享NIS目录
将NIS服务端的/nishome目录共享到NIS域中,客户端挂载/nishome到本地即可(推荐自动挂载)
NIS Server
[root@NIS ~]# systemctl stop firewalld
[root@NIS ~]# setenforce 0
[root@NIS ~]# systemctl start nfs-server.service
[root@NIS ~]# systemctl enable nfs-server.service
[root@NIS ~]# systemctl status nfs-server.service
[root@NIS ~]# vim /etc/exports
/nishome *(ro)
[root@NIS ~]# exportfs -rv
exporting *:/nishome
[root@NIS-Server ~]# showmount -e 192.168.66.120/localhost
Export list for 192.168.66.120:
/nishome *
3.6 挂载NIS目录
NIS Client
[root@NIS-Client ~]# systemctl stop firewalld
[root@NIS-Client ~]# setenforce 0
[root@NIS-Client ~]# vim /etc/auto.master
/home /etc/auto.nis // 在autofs的主配置文件中定义挂载点根目录的子配置文件
vim /etc/auto.nis
* -fstype=nfs 192.168.211.133:/nishome/&
配置子配置文件(挂载点目录,触发目录,即需要的时候自动挂载产生),这里利用通配符的方式,将服务器端对应的用户挂载到客户端的通配符(用户名都是相同的)用户上;
[root@NIS-Client ~]# systemctl restart autofs
[root@NIS-Client ~]# systemctl enable autofs
[root@NIS-Client ~]# systemctl status autofs
查看:
Client查看:
cd /home // 没有用户user1目录
需要触发挂载点目录才会生成文件目录
触发服务端共享的/nishome目录下的user1目录
权限被拒绝:服务端的文件对于其他用户是没有执行权限。(注意:是目录权限的拒绝,并不是文件系统的拒绝)
-bash: cd: user1: Permission denied
chmod o+rwx user1
chmod o+rwx user2
chmod o+rwx user3
chmod o+rwx user4
chmod o+rwx user5
[root@NIS-Master ~]# exportfs -rv
-bash: exportfs: command not found
[root@NIS-Master ~]# find / -name 'exportfs*'
[root@NIS-Master ~]# yum -y install nfs-utils // exportfs命令是和nfs-utils这个包一起安装的
[root@NIS-Master ~]# exportfs -rv
exporting *:/nishome[root@NIS-Master ~]# showmount -e 192.168.66.120
clnt_create: RPC: Program not registered
rpm -qa |grep rpcbind
rpm -qa |grep nfs
systemctl restart rpcbind
systemctl enable --now nfs-server rpcbind
[root@NIS-Master ~]# showmount -e 192.168.66.120
Export list for 192.168.66.120:
/nishome *
域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。
hosts 配置文件把主机名字映射到IP地址
一般情况下hosts的内容关于主机名(Hostname)的定义,每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址。
第二部份:主机名.域名,注意主机名和域名之间有个半角的点。
第二部份:主机名(主机名别名) ,其实就是主机名。
当然每行也可以是两部份,就是主机IP地址和主机名;比如 192.168.1.195 debian
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost.localdomain localhost
192.168.1.195 debian.localdomain debian
主机名(Hostname)和域名(Domain)
主机名就机器本身的名字,域名是用来解析到IP的,主机名也是可以解析到IP上的
hostname -i
References:
https://blog.csdn.net/qq_41959899/article/details/105948440
https://blog.csdn.net/songzaozao/article/details/45333389
https://blog.csdn.net/weixin_55821558/article/details/126505444
https://www.jianshu.com/p/087b2dab124c
https://blog.csdn.net/qq_41959899/article/details/105899689
https://www.ubuntumint.com/
https://www.fasteda.cn/post/112.html
https://blog.csdn.net/qq_41959899/article/details/105948440#t19
RPC:https://blog.csdn.net/qq_41959899/article/details/105899689
https://webmin.com/docs/modules/nis-client-and-server/
https://zhuanlan.zhihu.com/p/359071882
https://www.ibm.com/docs/en/aix/7.1?topic=service-nis-installation-configuration
https://www.ubuntumint.com/

浙公网安备 33010602011771号