我们使用 Linux NIS 服务器(网络信息服务)用于在网络上的系统之间共享存储在平面文件中的关键数据。通常理想的做法是使用共享存储库(例如 NIS)来存储用户和组信息,而不是将它们存储在 /etc/passwd 等平面文件中。
那么这样做有什么好处呢?
通过通过 NIS 服务器提供此类文件,将允许任何远程 NIS 客户端计算机访问或查询这些共享文件中的数据,并将它们用作本地版本的扩展。
NIS 不用于共享文件。您可以通过 NIS 共享任何至少有一列具有唯一值的表格文件,例如 /etc/services 文件。
使用 NIS 服务器的主要好处是您可以保留数据和文件,并将任何更新传播给所有用户。
一些用户,尤其是 Windows 用户,可能会认为这是类似 Active Directory 的服务。 Linux NIS 服务器早于 Active Directory,并且不是它的复制品。
什么是NIS?
NIS 是一个包含一系列表的数据库。它从 /etc/passwd、/etc/services 等文本文件以及任何其他表格文件创建表。
每个表可能包含一列或多列,每行都有一个唯一的键。
您可以将其视为任何普通数据库。
您可以通过两种方式查询这些表:
当程序请求搜索用户密码详细信息时,客户端会检查 /etc/passwd 文件以检查该用户是否不存在;然后,客户端要求 NIS 服务器在 NIS 服务器的 /etc/passwd 表中搜索它。
您可以使用 NIS 服务器附带的任何服务和工具:
ypserv:此服务等待查询并向 NIS 客户端提供答案。
ypbind:这是NIS的客户端。
ypxfrd:您可以使用此服务将NIS 数据库从主MIS 服务器发送到从属服务器。
Linux NIS 服务器
Linux NIS 服务器类型有:
-
主服务器:存储原始文件。
-
从(辅助)服务器:我们可以使用它来进行负载平衡,并在主服务器发生故障时很有帮助。
如果需要,您可以拥有多个辅助 NIS 服务器。
主 NIS 服务器和辅助 NIS 服务器保持同步和更新。这个过程称为服务器推送.
NIS 域名
NIS 域就像 Windows 中的域控制器的域,但不同之处在于客户端无需等待管理员接受即可加入网络。
请记住,用于 NIS 域名的名称必须与您的 DNS 域名不同。
安装 Linux 主 NIS 服务器
在基于 Red Hat 的发行版上,您可以像这样安装它:
$ dnf -y install ypserv
在基于 Debian 的发行版上,您可以像这样安装它:
$ apt-get -y install nis
安装成功后,需要使用domainname命令设置NIS域名。
我们将其命名为 nis.example.com
$ domainname nis.example.com
为了在基于 Red hat 的发行版中保留我们的 NIS 域名,我们可以创建一个名为的变量尼斯域in the /etc/sysconfig/网络file.
在基于 Debian 的发行版上,您可以通过将具有正确值的域名命令添加到在启动时运行的 rc 脚本之一来实现相同的结果。
配置NIS
正如我们之前提到的,ypserv 等待查询并向 NIS 客户端提供答案。
NIS 是一种 RPC 服务,因此在尝试启动 Linux NIS 服务器之前,需要确保 rpcbind 程序已启动并正在运行。
在依赖 systemd 作为服务管理器的新 Linux 发行版上,systemd 将自动处理 rpcbind 和 ypserv 之间存在的服务内部依赖性。
如果您的发行版不是其中之一,您可以像这样启动 rpcbind:
$ systemctl start rpcbind
在我们有 systemd 的发行版上,我们可以像这样启动服务:
$ systemctl start ypserv
要确认服务正在运行,可以使用 rpcinfo 命令。
$ rpcinfo -p | grep ypserv
编辑 Makefile
make 命令负责准备需要编译的文件列表以及每个文件编译所需的程序。
make 命令编译一个名为 Makefile 的文件。
将这个概念应用到 NIS 上是很简单的。在这种情况下,需要将一系列文本文件转换为数据库格式。我们需要一个能够重新转换任何已更改文件的工具。我们可以使用make命令。
Makefile 位于 /var/yp 目录中。该文件包含NIS服务器共享的所有文件。
让我们讨论一下 Makefile 中的选项。
不推送选项
如果您计划拥有 NIS 从属服务器,则需要告诉主 Linux NIS 服务器将生成的映射推送到从属服务器。改变NOPUSH 变量为false 如果你想支持从服务器。
NOPUSH=true
请记住,您需要在以下位置列出从属服务器的主机名:/var/yp/ypservers文件并确保在/etc/主机file.
最小 UID GID
Linux 上的每个用户都有一个用户 ID 和组 ID。您可以通过分别输入 id 命令和 gid 命令来获取您的 id。
您可以使用 MINUID 和 MINGID 设置将通过 NIS 共享的文件的最低权限,如下所示:
MINUID=500
MINGID=500
将影子密码与真实密码合并
Linux NIS 服务器可用于验证其用户,NIS 服务器会自动从客户端获取加密字段/etc/影子文件并将其合并到 NIS 共享副本中/etc/密码.
您可以使用 MERGE_PASSWD 选项来执行此操作:
MERGE_PASSWD=true
将组影子密码与真实密码合并
The /etc/组文件允许将密码应用于组设置。自从/etc/组文件需要公开可读,大多数发行版都支持影子组文件/etc/gshadow.
该选项称为 MERGE_GROUP:
MERGE_GROUP=true
共享条目
在 Makefile 中,有一个选项可以让您指定需要共享的内容;这是(所有)选项。
all: passwd group hosts services shadow networks
选项YPPWDDIR指定 passwd、组和影子文件的位置,因此您无需键入完整路径。
使用 ypinit 初始化 NIS 服务器
完成 Makefile 中的选项编辑后,您可以像这样初始化 NIS 服务器:
$ /usr/lib64/yp/ypinit -m
您可以使用 -m 选项将服务器初始化为主服务器。
或者如果您使用的是 32 位系统,命令将是:
$ /usr/lib/yp/ypinit
该工具将询问辅助 NIS 服务器(如果有)。
服务器将把这些条目存储在/var/yp/ypserversfile.
恭喜,现在您的 NIS 服务器应该可以正常工作,并且您的地图将位于辅助服务器(如果有)上。
配置NIS客户端
在基于 Red Hat 的发行版上,您可以像这样安装 NIS 客户端:
$ dnf -y install ypbind
在基于 Debian 的发行版上,您可以像这样安装它:
$ apt-get install nis
The /etc/yp.conf文件是客户端守护程序的配置。
您现在可以启动 ypbind:
$ systemctl start ypbind
$ systemctl enable ypbind
/etc/nsswitch.conf 文件
该文件包含系统将用于搜索的设施及其相应文件和服务的条目。
passwd: files nis
此条目告诉服务器在 /etc/passwd 文件中搜索密码条目,如果 NIS 服务器找不到任何内容,请检查 NIS 服务器。
网络信息服务工具
有一些有用的工具可以帮助您管理数据库中的信息。
ypcat:您可以使用此工具通过从 NIS 映射中提取数据来从 NIS 服务器获取数据。
ypwhich:获取响应您的请求的 Linux NIS 服务器的名称。
ypmatch:而不是抓取整个地图,或者您可以通过按键搜索来获取特定条目。