操作场景
本节操作适用于Linux操作系统云主机,出现因/etc/passwd文件损坏导致云主机无法登录的问题。
说明
本节操作为紧急恢复系统方法,需要在单用户模式下会将系统备份初始备份/etc/passwd-文件替换已损坏的/etc/passwd文件,该操作会造成自行添加的用户丢失(包括应用运行的用户,可以参考/etc/shadow文件添加其他账号)。
本节操作涉及重启云主机操作,重启云主机会造成业务中断,请谨慎操作。
问题描述
Linux系统中多个服务启动失败:Failed to start Login service 、Filed to start Authorization service。
待系统启动后登录,提示密码错误。
根因分析
/etc/passwd和/etc/shadow文件记录所有的用户信息,每个用户都有一个对应的记录行,如果该文件损坏或者误删除会导致登录服务(systemd-logind.service)启动失败,因此用户无法登录。
处理方法
-
使用控制台提供的远程登录方式登录云主机。单击远程登录操作面板上方的“发送CtrlAltDel”按钮,重启虚拟机。
-
确认开始重启后,立即反复单击上下键,阻止系统继续启动,在出现内核选项时按字母键e进入内核编辑模式。
-
找到linux16行末尾,删除不需要加载的参数(ro参数开始到末尾)。修改ro为rw,以读写方式挂载根分区。并添加rd.break,然后执行Ctrl+X。
-
执行以下命令切换至/sysroot目录。
# chroot /sysroot
-
执行以下命令检查/etc/passwd文件。
cat /etc/passwd
-
确认passwd文件已被破坏,执行以下命令使用系统初始的备份passwd-文件替换损坏的passwd文件。
# cp /etc/passwd- /etc/passwd
说明该操作会造成自行添加的用户丢失,如果为应用运行的用户会导致应用启动失败,待修复后请自行添加用户。
- 执行两次以下命令退出当前目录。
# exit
- 云主机自动重启,使用root可登录云主机,查看/etc/passwd已正常。