忘记Linux密码?一个很多人不知道的“底层恢复方法”

admin 2026-03-18 23:18:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了一种忘记Linux密码的底层恢复方法,核心在于修改/etc/shadow文件中的密码哈希。通过Live系统挂载硬盘并清空哈希字段,可实现无密码登录。文章解释了Linux验证机制,指出物理访问权等同于完全控制权,并建议使用LUKS全盘加密进行防御,强调安全的核心在于控制而非隐藏。 综合评分: 85 文章分类: 实战经验,安全意识,终端安全


cover_image

忘记 Linux 密码?一个很多人不知道的“底层恢复方法”

原创

Сяо Яо Сяо Яо

AlphaNet

2026年3月13日 15:05 韩国

在使用 Kali Linux、Ubuntu、Debian 等 Linux 系统时,很多人都会遇到一个尴尬的情况:

电脑还在,系统也在,但密码忘了。

不少新手会做出几个典型选择:

  • 重装系统

  • 删除用户

  • 在网上寻找“密码破解工具”

然而 Linux 的设计其实非常朴素。只要理解系统如何保存用户信息,就会发现有一种更底层、也更优雅的恢复方法。

关键点在于:

Linux 登录验证,本质上只是读取一个文件。


一、Linux 用户信息到底存在哪里?

Linux 用户体系主要依赖两个文件:

/etc/passwd
/etc/shadow

它们的职责不同:

| 文件 | 作用 | | — | — | | /etc/passwd | 存储用户基本信息 | | /etc/shadow | 存储用户密码哈希 |

早期 Unix 系统把密码也放在 /etc/passwd 里,但后来发现这样风险太大,于是引入了 /etc/shadow

这个文件有一个关键特征:

只有 root 用户可以读取。


二、Linux 登录验证的真实过程

很多人以为系统会“检查密码”,但实际上系统并不知道你的密码是什么。

Linux 做的事情是:

  1. 读取 /etc/shadow

  2. 找到对应用户的 密码哈希

  3. 将输入的密码再次计算哈希

  4. 对比两者是否一致

流程可以简化为:

输入密码
   ↓
计算 hash
   ↓
和 /etc/shadow 对比

如果哈希一致 → 登录成功

如果不一致 → 登录失败

也就是说:

系统只知道一串哈希,而不知道真实密码。


三、/etc/shadow 文件结构

/etc/shadow 每一行对应一个用户。

基本格式如下:

用户名:密码hash:其他字段

例如 Kali 系统中的一条记录:

kali:$y$j9T$abcd1234xyz...:19793:0:99999:7:::

字段解释:

| 字段 | 含义 | | — | — | | 用户名 | 登录账号 | | 密码hash | 加密后的密码 | | 19793 | 上次修改密码日期 | | 0 | 最小修改间隔 | | 99999 | 最大密码有效期 | | 7 | 过期提醒 |

真正决定登录结果的只有一个字段:

密码 hash


四、一个经典恢复思路

既然系统只是比较 hash,那就出现一个有趣的问题:

如果 hash 不存在 会发生什么?

答案是:

系统会认为该用户 没有设置密码

举个例子。

原来的记录:

kali:$y$j9T$abcd1234xyz...:19793:0:99999:7:::

如果修改为:

kali::19793:0:99999:7:::

注意:

kali::

中间的密码 hash 被删除了。

此时系统会认为:

这个用户没有密码。

登录时:

用户名: kali
密码: 直接回车

即可进入系统。

进入后再重新设置密码即可。


五、实际恢复操作流程

由于 Windows 默认无法读取 Linux 的 ext4 文件系统,所以常见做法是使用 Live Linux 系统

例如:

  • Ubuntu Live

  • Kali Live

通过 U 盘启动。


步骤 1:启动 Live 系统

插入 U 盘启动 Linux,选择:

Try Ubuntu
或
Try Kali

进入临时系统。


步骤 2:查看硬盘分区

打开终端:

lsblk

示例输出:

sda
 ├─sda1
 ├─sda2
 └─sda3

假设 Kali 系统在:

/dev/sda3

步骤 3:挂载系统分区

mount /dev/sda3 /mnt

此时 Kali 的文件系统位于:

/mnt

步骤 4:编辑 shadow 文件

打开文件:

nano /mnt/etc/shadow

找到对应用户:

kali:$y$j9T$xxxxx:19793:0:99999:7:::

删除 hash:

kali::19793:0:99999:7:::

保存并退出。


步骤 5:重启系统

reboot

进入 Kali 登录界面。

输入:

用户名: kali
密码: 直接回车

即可进入系统。


步骤 6:重新设置密码

进入系统后执行:

passwd kali

输入新密码即可恢复正常。


六、为什么这个方法这么有效?

因为 Linux 的安全模型有一个非常现实的假设:

如果攻击者拥有物理访问权,系统几乎无法完全防御。

只要攻击者能够:

  • 从 USB 启动系统

  • 挂载硬盘

  • 修改系统文件

那么:

/etc/shadow

就可以被直接修改。

密码机制自然被绕过。


七、真正的防御方法:磁盘加密

解决这个问题的唯一有效方法是:

全盘加密

Linux 中最常用的是:

LUKS(Linux Unified Key Setup)

开启后:

/etc
/home
/root
整个系统

都会被加密。

如果没有解密密钥,硬盘里的内容只是一堆:

随机数据。


八、Linux 的安全哲学

很多人第一次看到这种设计时会觉得:

Linux 为什么这么“容易被破解”?

其实这是刻意的设计。

Linux 不试图伪造“绝对安全”。

它遵循一个非常现实的原则:

物理访问权 = 完全控制权

如果有人拿到你的电脑,他可以:

  • 拆下硬盘

  • 重装系统

  • 复制数据

软件密码无法真正阻止这些行为。

因此 Linux 的真正防线是:

  • 磁盘加密

  • BIOS / UEFI 密码

  • 禁止外部启动


九、安全领域的一个经典结论

在信息安全领域有一句非常著名的话:

Security is not about secrets, it’s about control.

安全并不是隐藏,而是控制。

控制:

  • 硬件

  • 启动环境

  • 数据访问

密码只是门锁。

而真正的保险库,是 加密与访问控制


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:AlphaNet Сяо Яо Сяо Яо《忘记 Linux 密码?一个很多人不知道的“底层恢复方法”》

    vulnhub靶场Earth 网络安全文章

    vulnhub靶场Earth

    文章总结: 本文详细记录了VulnHub靶场Earth的渗透测试全过程。通过端口扫描发现域名信息,利用XOR解密获取用户凭证并登录后台,结合命令执行漏洞与Bas
    评论:0   参与:  0