我想弄清楚密码重置程序在 CentOS/RHEL 7 中的确切工作原理,但我缺少一些基本知识。
在几个 不同的 例子中,我认为这chroot /sysroot
是必要的,但我不明白为什么或这一步具体做什么。例句:
我只想说,这些程序的解释有点稀疏。:-( 有人可以详细说明一下吗?
您正在谈论重置丢失的root密码的过程。仅当 root 密码丢失并且没有sudo
root 访问或类似权限时才需要这样做。
在启动时,引导加载程序(通常是 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 时,引导脚本通常会触发重新启动。
这是你需要的那种解释吗?
归档时间: |
|
查看次数: |
4643 次 |
最近记录: |