在 RHEL/CentOS 7 中重置密码时使用的 chroot 命令是什么?

Mik*_*e B 1 rhel centos grub2

我想弄清楚密码重置程序在 CentOS/RHEL 7 中的确切工作原理,但我缺少一些基本知识。

几个 不同的 例子中,我认为这chroot /sysroot是必要的,但我不明白为什么或这一步具体做什么。例句:

  • (来源 A)“5 – 现在使用此命令访问系统。”
  • (来源 B)“BOOM。你处于单用户模式。shell 提示!--看起来像 :/#
    type chroot /sysroot”
  • (来源 C)“然后使用 chroot 进入 chroot jail”

我只想说,这些程序的解释有点稀疏。:-( 有人可以详细说明一下吗?

tel*_*coM 6

您正在谈论重置丢失的root密码的过程。仅当 root 密码丢失并且没有sudoroot 访问或类似权限时才需要这样做。

在启动时,引导加载程序(通常是 GRUB)加载 2 个文件:内核和 initramfs(也称为 initrd)文件。initramfs 文件包含一个最小文件系统,其中包括激活真正的根文件系统、其磁盘控制器和激活它所需的其他功能所需的任何工具和内核模块(例如:LVM、磁盘加密、多路径和/或软件 RAID)。

rd.break启动选项告诉引导顺序停止,而系统仍然使用initramfs,但真正的根文件系统已经安装在/sysroot。通常下一步将是一个 pivot_root 操作切换/sysroot到真正的根文件系统,从那里开始执行内容,然后从内存中删除 initramfs。

通过在 initramfs 中停止,我们可以访问紧急外壳。但是 initramfs 的可用命令数量非常有限,并且编辑 initramfs 的/etc/passwd文件将一无所获,因为无论如何整个 initramfs 都会被真正的根文件系统替换。

根文件系统最初以只读模式挂载,以便进行文件系统检查。第一步是以读写方式重新安装它,以允许密码更改保持不变。

chroot /sysroot命令的意思是:“以这样的方式启动一个新的 shell,该 shell 的/sysroot目录将显示为/.”。在这一chroot环境,/etc/passwd/etc/shadow会参考真正的密码文件,在实际的根文件系统,/bin/passwd将在系统正常运行,你会使用相同的命令。由于这个 chroot 的 shell 是从紧急 shell 启动的,您已经拥有完全的 root 访问权限,并且您可以使用该passwd命令为任何人设置新密码,而无需先询问旧密码 - 包括设置新的 root 密码。

一旦该过程完成,第一个exit命令将退出 chrooted shell 并返回到初始紧急 shell,它仍然将真正的根文件系统视为/sysroot. 第二个exit命令将控制权返回给引导脚本,当使用紧急 shell 时,引导脚本通常会触发重新启动。

这是你需要的那种解释吗?