文档首页/ 弹性云服务器 ECS/ 故障排除/ SSH连接/ /etc/passwd文件损坏导致云服务器登录失败怎么办?
更新时间:2024-07-04 GMT+08:00
分享

/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)启动失败,因此用户无法登录。

处理方法

  1. 在控制台重启主机,进入单用户模式。

    进入单用户模式的详细操作请参考Linux云服务器如何进入单用户模式重置root密码

  2. 执行以下命令检查/etc/passwd文件 。

    cat /etc/passwd

  3. 确认passwd文件已被破坏,执行以下命令使用系统初始的备份passwd-文件替换损坏的passwd文件 。

    cp /etc/passwd- /etc/passwd

    该操作会造成自行添加的用户丢失,如果为应用运行的用户会导致应用启动失败,待修复后请自行添加用户。

  4. 执行以下命令退出当前根目录至initramfs的根目录。

    exit

  5. 重启云服务器
  6. (可选)待系统启动,添加丢失的用户,例如执行以下命令添加Nginx运行用户nobody并指定该用户shell为/sbin/nologin(请根据场景添加用户,需要登录系统的用户需要指定shell为/bin/bash)。

    useradd nobody -s /sbin/nologin

相关文档