/etc/passwd文件损坏导致云服务器登录失败怎么办?
操作场景
本节操作适用于Linux操作系统云服务器/etc/passwd文件损坏导致云服务器无法登录的问题。
- 本节操作为紧急恢复系统方法,需要在单用户模式下会将系统备份初始备份/etc/passwd-文件替换已损坏的/etc/passwd文件,该操作会造成自行添加的用户丢失(包括应用运行的用户,可以参考/etc/shadow文件添加其他账号)。
- 本节操作涉及重启云服务器操作,重启云服务器会造成业务中断,请谨慎操作。
问题描述
Linux系统中多个服务启动失败:Failed to start Login service 、Failed to start Authorization service。
待系统启动后登录,提示密码错误。
根因分析
/etc/passwd和/etc/shadow文件记录所有的用户信息,每个用户都有一个对应的记录行,如果该文件损坏或者误删除会导致登录服务(systemd-logind.service)启动失败,因此用户无法登录。
处理方法
- 在控制台重启主机,进入单用户模式。
进入单用户模式的详细操作请参考Linux云服务器如何进入单用户模式重置root密码
- 执行以下命令检查/etc/passwd文件 。
- 确认passwd文件已被破坏,执行以下命令使用系统初始的备份passwd-文件替换损坏的passwd文件 。
该操作会造成自行添加的用户丢失,如果为应用运行的用户会导致应用启动失败,待修复后请自行添加用户。
- 执行以下命令退出当前根目录至initramfs的根目录。
- 重启云服务器。
- (可选)待系统启动,添加丢失的用户,例如执行以下命令添加Nginx运行用户nobody并指定该用户shell为/sbin/nologin(请根据场景添加用户,需要登录系统的用户需要指定shell为/bin/bash)。