passwd命令可直接修改root密码,但需已具备root或sudo权限;若root密码遗忘,则必须通过grub编辑启动参数(如rd.break或init=/bin/bash)、重挂载根分区为读写、chroot后执行passwd root,并在selinux环境执行touch /.autorelabel。

passwd 命令能直接修改 root 密码——但前提是**你当前已拥有 root 权限或 sudo 权限**;如果 root 密码彻底遗忘、无法登录,passwd 就完全失效,必须通过启动参数干预系统初始化流程。
普通情况:有权限时用 passwd 或 sudo passwd root
这是最安全、最推荐的方式,不碰启动流程,不改文件系统挂载状态。
- 如果你已经是 root(比如用
su -切换成功),直接运行passwd,按提示输两次新密码即可 - 如果你是普通用户但属于
sudo组,运行sudo passwd root——它会先验证你的用户密码,再让你设 root 新密码 - 新密码必须满足 PAM 策略(如最小长度、大小写、数字等),否则报错
passwd: password unchanged - 改完立即生效,已打开的 shell 会话仍保持原身份,但新登录或
su会用新密码
root 密码遗忘:必须进 GRUB 编辑启动参数
所有发行版都绕不开这一步:中断 GRUB,加参数强制跳过登录验证。关键不是“选哪个参数”,而是“参数加对位置+后续挂载正确”。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 启动时按
Shift(Ubuntu/Debian)或Esc(RHEL/CentOS)调出 GRUB 菜单,选中目标内核后按e - 找到以
linux或linuxefi开头的行,光标移到行尾 - 删掉末尾的
ro quiet splash $vt_handoff(或类似只读参数),替换成:- Ubuntu/Debian/Arch 等:追加
rw init=/bin/bash - RHEL/CentOS 7+/Rocky/Alma:追加
rd.break
- Ubuntu/Debian/Arch 等:追加
-
Ctrl+X启动后:- 用
init=/bin/bash进入的环境,根目录就是/,但默认仍是只读,必须先执行mount -o remount,rw / - 用
rd.break进入的环境,根在/sysroot下且只读,需先mount -o remount,rw /sysroot,再chroot /sysroot
- 用
SELinux 环境下重置后必须 touch /.autorelabel
CentOS/RHEL/Fedora 默认启用 SELinux,重置密码后若不打标记,下次启动会卡在 relabel 阶段,系统 hang 住不动——这不是失败,是 SELinux 在强制校验上下文。
- 只有用了
rd.break的 RHEL 系发行版才必须做这步;init=/bin/bash方式在 Ubuntu 等系统上无需此操作 - 执行
touch /.autorelabel后再exit或reboot -f,系统重启时自动完成 relabel - 漏掉这步的典型现象:重启后黑屏、光标闪烁、无任何输出,等 5–10 分钟也没反应
别信“改 /etc/shadow 清空密码字段”这种老方案
手动清空 /etc/shadow 中 root 行第二个字段(比如改成 root::19234:0:99999:7:::),虽能让 root 空密码登录,但现代系统普遍禁用空密码登录(PAM 的 auth [success=1 default=ignore] pam_succeed_if.so user != root quiet 类规则),实际根本登不进去。
- 空密码登录在大多数发行版默认关闭,
PermitEmptyPasswords no是 SSH 默认值 - 清空字段还可能触发 PAM 拒绝,报错
Authentication failure却不提示原因 - 用
passwd root是唯一兼容所有策略的正向操作,不要绕开它去编辑 shadow
passwd 却报 Authentication token manipulation error,八成是因为没重挂载为读写;重置完了重启卡死,大概率是忘了 touch /.autorelabel。










