LinuxchrootRecoveryPass
Linux_chroot_RecoveryPass
[toc]
imooc:通过 chroot 重新设置 root 密码 (opens new window)
# instruction
systemd 的管理机制中,rescure 模式和 emeryency 模式是无法直接取得 root 权限的,需要使用 root 密码才能进入 rescure 和 emeryency 环境。所以我们需要通过其他方式来设置 root 密码。
可以为内核的启动指定 "rd.break" 参数,从而让系统在启动的早期停下来,此时可以通过使用 root 权限并结合 chroot 命令完成设置 root 密码的操作。
# step
# bootloadr
在系统启动过程中进入开机菜单时按下字母键 e 进程开机菜单的编辑模式.
找到以 "linux16 /vmlinuz-" 开头的行,定位到该行结尾处,输入一个空格和字符串 "rd.break".
按下 ctrl + x 以该设置继续启动,启动过程中操作系统会停下来. 此时系统的根目录还挂载在 RAM disk 上(内存中的一个文件系统),可以通过 mount 命令检查系统当前挂载的文件系统。
- 第一行说明此时的根目录在一个 RAM disk 中, 即 rootfs。
- 第二行说明我们的文件系统此时被挂载到了 /sysroot 目录,并且是只读的模式.
# remount
- 把 /sysroot 重新挂载为可读写的模式
switch_root:/# mount -o remount,rw /sysroot
- chroot 命令把根目录切换到原来的环境中
switch_root:/# chroot /sysroot
此时可以理解为:我们以 root 权限登录了原来的系统
# recovery
- 为 root 用户设置新的密码
#echo "new_root_pw" | passwd --stdin root
# selinux
- 处理 SELinux 相关的问题 由于当前的环境中 SELinux 并未启动,所以我们对文件的修改可能造成文件的 context 不正确。 为了确保开机时重新设定 SELinux context,必須在根目录下添加隐藏文件 .autorelabel
#touch /.autorelabel
- 从 chroot 中退出,并重启系统
sh-4.2#exit switch_root:/# reboot
上次更新: 2023/10/10, 14:48:21