文章总结: 本文介绍了一种忘记Linux密码的底层恢复方法,核心在于修改/etc/shadow文件中的密码哈希。通过Live系统挂载硬盘并清空哈希字段,可实现无密码登录。文章解释了Linux验证机制,指出物理访问权等同于完全控制权,并建议使用LUKS全盘加密进行防御,强调安全的核心在于控制而非隐藏。 综合评分: 85 文章分类: 实战经验,安全意识,终端安全
忘记 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 做的事情是:
-
读取
/etc/shadow -
找到对应用户的 密码哈希
-
将输入的密码再次计算哈希
-
对比两者是否一致
流程可以简化为:
输入密码
↓
计算 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 密码?一个很多人不知道的“底层恢复方法”》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论