问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 在维护Linux系统的过程中,可能会遇到各种紧急情况,其中/etc/passwd文件的损坏是运维人员特别需要准备应对的一种情形。该文件作为Linux用户账户信息的核心存储,一旦遭到破坏,会直接导致用户无法登录,甚至系统服务失败。这次处理问题的记录会提供一个详细步骤,以帮助恢复损坏的/etc/passwd文件,从而快速解决登录失败危机。

linux.jpg


引言

在维护Linux系统的过程中,可能会遇到各种紧急情况,其中/etc/passwd文件的损坏是运维人员特别需要准备应对的一种情形。该文件作为Linux用户账户信息的核心存储,一旦遭到破坏,会直接导致用户无法登录,甚至系统服务失败。这次处理问题的记录会提供一个详细步骤,以帮助恢复损坏的/etc/passwd文件,从而快速解决登录失败危机。


应用场景

这个解决方法主要应用于因/etc/passwd或/etc/shadow文件损坏导致的Linux系统登录故障。这通常发生在文件被意外删除或损坏的情况下,可适用于多数使用Linux操作系统的服务器,尤其是云主机。

请注意:此操作涉及到系统的底层修改,并可能需要重启主机,这将暂时影响当前运行的服务和应用。


问题描述

Linux系统中多个服务启动失败:Failed to start Login service 、Failed to start Authorization service。

待系统启动后登录,提示密码错误。

在众多系统启动失败的症状中,服务启动失败登录时反复提示密码错误是两个常见的迹象,这些都可能指向一个共同的原因——即/etc/passwd或/etc/shadow文件的损坏。这些文件记录了系统中所有用户的信息,包括用户名、UID、GID、家目录、shell等,是用户管理和验证的关键。


根原分析

在Linux系统中,/etc/passwd和/etc/shadow文件扮演着控制用户访问权限和身份验证的角色。如果该文件损坏或者误删除会导致登录服务systemd-logind.service启动失败,因此用户无法登录。


处理方法

1. 进入单用户模式

重启Linux系统并在启动时按下适当的键(如“e”进入编辑模式),在GRUB菜单选择对应的内核版本,进入单用户模式。这一步骤是为了获得不加载正常使用用户和模块的系统状态,以便我们可以在最小环境下修复文件。

2. 检查与确认文件状态

在单用户模式下,使用cat /etc/passwd命令查看当前的文件内容。

cat /etc/passwd

通常,这个文件会包含以冒号分隔的多个字段,展示每个用户的信息。如果该文件内容残缺不全或者格式异常,这就确认了故障诊断。

3. 文件恢复

在确认文件已损后,可以使用系统备份的文件进行恢复。执行命令cp /etc/passwd- /etc/passwd

cp /etc/passwd- /etc/passwd

这将用较为完好的备份文件/etc/passwd-替换掉当前损坏的/etc/passwd文件。需要注意的是,这一操作可能会导致所有在此之后添加的用户丢失,因为这些信息仅存储在原文件中。

4. 权限与属性修正

替换文件后,为确保系统安全和权限的正确性,应重新设置文件的权限。使用chmodchown命令确保/etc/passwd具有适当的系统权限和所有者。

例如

chmod 644 /etc/passwd
或者
chown root:root /etc/passwd

5. 重启与验证

更改完成,执行下述命令后,再重启系统。

exit
reboot

在系统重启后,尝试使用不同的用户登录验证是否解决了之前的问题。

6. 数据与用户恢复

由于替换文件可能导致用户数据丢失,我们需要根据/etc/shadow文件或其他记录重新添加用户和相关权限。对于运行特定应用所需的用户,如nobody用户,可以执行下述命令进行添加。

useradd nobody -s /sbin/nologin


最后

处理Linux系统中/etc/passwd文件损坏的紧急情况,要求维护人员熟悉系统内部结构和紧急恢复步骤。尽管这类操作可以帮助恢复基本的系统功能,但为避免未来类似问题的发生,建议定期进行文件完整性检查,备份关键配置文件,来识别和预防此类事件。



最后~欢迎关注我! @Linux学习的那些事儿

我的个人资源整理,满满都是干货: 无任何套路,有需要可以访问领取

200T免费资源专区,持续发布中...

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

相关文章
|
13天前
|
人工智能 安全 Linux
|
19天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
63 9
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
41 5
|
2月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
66 2
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
452 3
|
2月前
|
监控 安全 网络协议
快速配置Linux云服务器
【10月更文挑战第3天】快速配置Linux云服务器
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
280 1
|
2月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
88 0