一位系统管理员不小心将 /etc/passwd 移到了一边...哎呀!从备份中恢复文件不起作用...它出错了,因为 root 用户不存在。
我已在此站点上运行 NIS 并提供 passwd/group/shadow 文件,我尝试添加 root 用户,但无法使其传播(我尝试了不同的 MINUD 和 MINGID 值)。我理解 NIS 为何要避免做这样的事情,但是,呃,救命!
该服务器运行的是 CentOS 5.6,并且没有 CD/DVD 驱动器,所以我无法重新启动到救援 CD。
有什么建议么?
答案1
我确信有某种方法可以尝试将 root 用户强行塞入其中,但如果您迫切希望在最短的时间内让它再次工作,我的方法是使用 USB 拇指驱动器或 USB CD 驱动器,您可以使用救援 CD 进行启动;这两种方法都应该随时可用,并且当您找到使用巧妙的解决方法的方法时,您可能已经从当地零售商那里拿回了驱动器并下载了救援发行版放在您的桌面上。
您没有提到有关服务器的更多信息,但有可能它没有运行 RAID(或者系统驱动器不是 RAIDED)?如果是这种情况,您可以移除驱动器并将其安装到另一个系统中,然后在那里更改文件。根据系统的关键程度,您可以尝试在另一个系统中安装驱动器和控制器,以将整个 RAID 卷作为另一个驱动器启动。
您可能要考虑将 USB 驱动器作为将来该服务器恢复过程的备份。这次您的问题可能是人为错误,但这并不排除将来驱动器损坏导致类似问题的可能性。
答案2
您可以尝试临时编辑 NIS 主服务器上的 NIS Makefile。其中当前显示
passwd.byname: $(PASSWD) $(SHADOW) $(YPDIR)/Makefile
@echo "Updating $@..."
@$(UMASK); \
$(MERGER) -p $(PASSWD) $(SHADOW) | \
$(AWK) -F: '!/^[-+#]/ { if ($$1 != "" && $$3 >= $(MINUID) && $$3 !=$(NFSNOBODYUID)) \
print $$1"\t"$$0 }' | $(DBLOAD) -i $(PASSWD) \
-o $(YPMAPDIR)/$@ - $@
-@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@
MINUID
尝试更改该 awk 行以删除和的测试NFSNOBODYUID
,例如
$(AWK) -F: '!/^[-+#]/ { if ("" == "") \
并且同样在 passwd.byuid 部分中重新制作 passwd 映射,并查看 root 条目是否现在在其中ypcat passwd
。