发布时间:2026/7/15 8:09:34
Linux shadow 文件详解:恢复 root 密码的完整指南 一. shadow 文件简介在 Linux 系统中/etc/shadow文件用于存储用户密码的加密信息以及密码相关的策略属性。它与/etc/passwd文件配合使用passwd 文件保存用户基本信息且对所有用户可读而 shadow 文件中存放的加密密码仅对 root 用户可读从而提升了系统安全性。shadow 文件的每一行对应一个用户格式为用户名:加密密码:上次修改密码的日期:密码最小使用天数:密码最大使用天数:密码过期前的警告天数:密码过期后的宽限天数:账号失效日期:保留字段各个字段的含义如下用户名与 /etc/passwd 中的用户名一致。加密密码如果为空表示该用户没有密码如果是 ! 或 *表示账号被锁定无法通过密码登录。Ubantu就是在这里动了手脚让root用户没有办法登录。正常情况下这边应该是一个SHA256的值也就是用户加密的密码。上次修改密码的日期从 1970-01-01 开始的天数。密码最小使用天数两次修改密码之间最少间隔的天数防止频繁改回原密码。密码最大使用天数密码的有效期到期后强制用户修改密码。密码过期前的警告天数在密码过期前多少天开始向用户发送警告。密码过期后的宽限天数密码过期后用户仍可登录的天数超限后将锁定账号。账号失效日期从 1970-01-01 开始的天数超过此日期账号将被禁用。保留字段目前通常为空。管理员可以通过chage命令修改密码过期策略也可以使用passwd命令修改用户密码。对 shadow 文件的直接编辑通常使用vipw -s进行以确保文件锁定的安全性。可是Ubantu系统为了确保用户的安全默认禁用了管理员账号root他的Root密码是*占位符所以我们就没有办法使用管理员账号登录更没有办法修改root密码也就没有办法使用大部分的Root功能。虽然说Ubantu支持使用SUDO来暂时性的切换超级用户权限但被禁用了许多功能。二. 具体操作当 Ubuntu 系统的 root 账号密码被设置为*占位符而无法登录时有以下几种方案可以恢复或绕过此限制使用 sudo 临时提权如果当前用户拥有 sudo 权限可以直接使用sudo -i或sudo su -切换到 root 环境然后执行passwd root为 root 设置新密码。# 切换到 root 用户环境 sudo -i # 为 root 设置新密码交互式输入两次新密码 passwd root从 Live CD/USB 启动并清空 root 密码使用 Ubuntu 安装盘或其他 Linux 发行版的 Live CD/USB 启动电脑挂载原系统的根分区找到并编辑/etc/shadow文件将 root 行第二个字段加密密码的*删除留空使 root 无需密码即可登录。# 查看分区布局找到原系统的根分区如 /dev/sda2 sudo fdisk -l # 挂载原系统根分区到 /mnt sudo mount /dev/sda2 /mnt # 使用 vipw -s 安全编辑 shadow 文件注意路径是 /mnt/etc/shadow sudo vipw -s /mnt/etc/shadow # 找到 root 行将第二个字段的 * 删除留空后保存退出复制其他用户的密码哈希如果系统中存在另一个已知密码的用户例如你自己的普通用户可以将其在/etc/shadow中的加密密码字符串复制到 root 的密码字段。这样 root 就与该用户使用相同的密码。# 查看已知用户如 username在 shadow 中的加密密码哈希 sudo grep ^username: /mnt/etc/shadow | cut -d: -f2 # 将上述命令输出的哈希字符串复制到 root 行的第二个字段替换原来的 * sudo sed -i s/^root:[^:]*:/root:复制的哈希值:/ /mnt/etc/shadow生成自定义密码的加密值在可以运行命令的环境中例如通过 sudo 或 Live 环境使用openssl或mkpasswd工具生成指定密码的 SHA-512 加密哈希然后手动替换 root 在/etc/shadow中的密码字段。# 使用 mkpasswd 生成 SHA-256 加密哈希需先安装 whois 包 mkpasswd -m sha-256 你的新密码 # 或者使用 openssl 生成带随机盐的 SHA-512 哈希推荐 openssl passwd -6 你的新密码 # 得到哈希值后用 vipw -s 编辑 /mnt/etc/shadow手动替换 root 的第二个字段以下是恢复 root 密码的完整决策路径可根据自身情况按图索骥选择最合适的方案决策起点Ubuntu root 密码为 *无法登录 │ ├─ 有 sudo 权限 ── 是 ──→ 方案一sudo -i → passwd root → 完成 │ └─ 无 sudo 权限 ──→ 可物理接触机器 ── 是 ──→ 方案二Live CD/USB → 挂载根分区 │ │ │ ├─ 需自定义密码 ── 否 ──→ 删除/替换 * → 完成 │ │ │ └─ 需自定义密码 ── 是 ──→ 有已知密码用户 ── 是 ──→ 方案三复制哈希 → 完成 │ │ │ └─ 否 ──→ 方案四生成加密值openssl/mkpasswd → 完成 │ └─ 无 sudo 权限 且 不可物理接触机器 → 无法解决以上方法中方法 1最为简便但前提是当前用户已在 sudoers 列表中。方法 2是通用性强、无需已知凭证的终极方案。方法 3 和 4则适用于需要对密码哈希进行精细控制的场景。三. 注意事项与常见问题1. 直接编辑 shadow 文件的风险直接使用普通文本编辑器如 vi、nano修改/etc/shadow文件存在以下风险文件锁竞争系统进程如passwd、chage可能正在同时修改该文件导致数据损坏或丢失。格式错误shadow 文件中每个字段都有严格的顺序和分隔要求手工编辑容易遗漏或错位冒号错误的格式会导致该用户甚至所有用户无法登录。权限问题保存时如果权限设置不当可能使 shadow 文件权限变为可读造成密码哈希泄露。SELinux如果使用其他系统修改系统检测到重要文件的哈被修改了可能会主动阻止任何用户登录。因此强烈推荐使用vipw -s命令编辑 shadow 文件。它会自动对文件加锁防止并发写入并在编辑完成后检查格式最大限度降低安全风险。2. Live CD 方案中的分区挂载与可写性当使用 Ubuntu Live CD/USB 启动时原系统的根分区通常处于未挂载或只读状态。为确保能够写入 shadow 文件需要识别根分区使用sudo fdisk -l或lsblk查看分区布局确定原系统的根分区设备如/dev/sda2。挂载为可写执行sudo mount /dev/sda2 /mnt将其挂载到/mnt后不要忘记添加-o remount,rw或在挂载时直接以读写方式挂载默认通常是只读。如果文件系统错误导致只读可以先运行fsck修复。使用 chroot可选但推荐挂载后可通过sudo chroot /mnt切换到原系统的根环境此时执行passwd root更为安全和标准它会自动处理 shadow 文件的加密和格式。确认写入路径如果直接编辑文件路径应为/mnt/etc/shadow而非/etc/shadow否则修改的是 Live 环境自身的文件。3. 密码策略chage 设置与 shadow 字段的关联在恢复 root 密码之后有时可能需要调整密码过期策略以符合系统加固要求。使用chage命令与 shadow 文件字段的直接对应关系如下-m 最小使用天数对应第 4 个字段密码最小使用天数。-M 最大使用天数对应第 5 个字段密码最大使用天数。-W 警告天数对应第 6 个字段密码过期前的警告天数。-I 过期后宽限天数对应第 7 个字段密码过期后的宽限天数。-E 账户过期日期对应第 8 个字段账号失效日期格式为YYYY-MM-DD。如果需要让密码立即过期以强制用户在下次登录时修改可执行chage -d 0 root。建议在恢复 root 密码后结合安全策略设定合理的密码有效期限防止长期使用同一个密码。

相关新闻

2026/7/15 8:09:34

PAGravf重力场逼近的误差分析与精度评定原理及方法

来源:地球物理大地测量科学计算平台,章传银地球重力场无缝连续地充满于整个地固空间,我们只能用一定分辨率的格网空间平均值来表达重力场量,这是重力场量区别于一般离散点几何大地测量要素的典型特征,重力场逼近的误差…

2026/7/15 8:09:34

PIC18F46K40与M95M02-DR EEPROM的嵌入式数据存储方案

1. 项目背景与核心需求在嵌入式系统开发中,数据存储的可靠性往往决定着整个系统的稳定性。M95M02-DR这颗2Mbit的EEPROM芯片与PIC18F46K40微控制器的组合,恰好能满足工业级应用对非易失性存储的严苛要求。我最近在一个环境监测设备项目中采用了这套方案&a…

2026/7/15 9:04:37

Vulkan Minimal Compute:10分钟学会使用Vulkan进行GPU纯计算

Vulkan Minimal Compute:10分钟学会使用Vulkan进行GPU纯计算 【免费下载链接】vulkan_minimal_compute Minimal Example of Using Vulkan for Compute Operations. Only ~400LOC. 项目地址: https://gitcode.com/gh_mirrors/vu/vulkan_minimal_compute Vulka…

2026/7/15 9:04:37

Cosmopolitan Libc:C/C++跨平台开发新范式,一次编译多平台运行

1. 项目概述:一次构建,到处运行,这真的可能吗?如果你是一名C或C开发者,肯定对“跨平台”这三个字又爱又恨。爱的是,它意味着你的代码能触及更广阔的用户和设备;恨的是,为了实现它&am…

2026/7/15 9:04:37

自然语言处理模型训练全流程优化:从数据准备到生产部署

自然语言处理模型训练看似简单,但真正能训练出高质量模型的开发者却不多。斯坦福大学的研究揭示了一个惊人事实:当训练数据的错误率超过5%,即使是顶尖AI模型的性能也会急剧下降。这不仅仅是数据质量问题,更涉及到训练过程中的一系…

2026/7/15 9:04:37

MvZ2多模态大模型:细节处理能力解析与实践指南

最近在AI圈子里,一个名为MvZ2的模型突然火了起来。如果你关注多模态大模型的发展,可能已经听说过它——不是因为它参数规模有多大,而是因为它在视觉理解细节上的表现让人印象深刻。但说实话,当我第一次看到“MvZ2很精细”这样的评…

2026/7/15 8:59:36

Privasis-Cleaner-4B安全部署指南:确保隐私保护工具的安全性

Privasis-Cleaner-4B安全部署指南:确保隐私保护工具的安全性 【免费下载链接】Privasis-Cleaner-4B 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Privasis-Cleaner-4B Privasis-Cleaner-4B是一款轻量级文本清理模型,专为根据用户提供的…

2026/7/14 12:47:32

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/14 19:23:19

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/14 18:30:06

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/15 0:08:29

【LINUX】驱动

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

2026/7/15 0:08:29

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

2026/7/15 0:08:29

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…

2026/7/14 12:47:31

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…