我们的 NIS 主服务器出现故障,备份已过期,但还有一些从服务器。到目前为止,我除了一些基础知识外,对 NIS 一无所知。
我已经通过 ypcat 从旧的从属服务器转储了每个地图,设置了一台 SLES11 机器,将这些文件添加到 /var/yp/ypfiles,将 yast2 nis_server 指向它并设置了整个机器,包括两台作为从属的新机器 - 也是 SLES11。
然后我拿了一台旧机器,将其指向我的新 NIS 服务器并尝试进行身份验证。后来我发现出于某些原因你必须激活影子密码 - 而旧地图已经有 10 多年的历史了,没有影子密码,身份验证到目前为止还可以正常工作。
但是,netgroup 在另一台机器上无法工作。ypcat netgroup 给了我一个空行,ypcat netgroup.byhost 根本没有行,.byuser 也是一样。
我在空的 /etc/netgroup 末尾添加了 +:::::: ,没有任何变化。我在 /var/yp 中运行了 make - 没有任何效果。
/etc/nsswitch 来自服务器:
passwd: compat
group: compat nis
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files dns
services: files nis
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: nis
publickey: files
bootparams: files
automount: files
aliases: files nis
shadow: compat
来自测试 NIS 客户端的 /etc/nsswitch.conf:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
bootparams: files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files nis
publickey: files
automount: files
aliases: files
那么,为什么 ypcat 网络组在新服务器上不返回任何内容,而是通过旧从属服务器返回所有内容?
答案1
好的,显然 SLES11 使用两个源文件夹来生成数据。一部分是您在 yast 设置期间指定的文件夹,另一部分是 /etc 中的文件夹。netgroup 以及其他文件都是从 /etc 中提取的。passwd、group 和 shadow 等文件则不是。
因此空 netgroup 会造成混淆。这就是为什么将 +:::::: 添加到 /etc/netgroup 也不起作用的原因。
要纠正此行为,请在 /var/yp/Makefile 中编辑
YPSRCDIR = /etc
到
YPSRCDIR = /foo/your/ypfiles)
笔记:YPPWDDIR 从某些脚本中获取其源目录。将该行复制到 YPSRCDIR 可能是一种更简洁的解决方案。
此外,这个解决方案总体上有点不妥,因为它是从损坏的 NIS 主服务器恢复,没有备份,只能从 ypcat 从服务器转储和放置在与之前不同的操作系统上的单个文件夹中的所有内容进行恢复... 我不得不完全重建 netgroup 文件,使用很久以前我自发复制的过时版本。由于时间太长,我花了几天时间,尽管 Notepad++ 在这方面帮了我很多忙。
故事的道德启示: 适当的备份和检查确实非常重要。