- linux系统的启动过程
在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程
1 开机自检(POST),初始化部分硬件 2 搜素可用于引导的启动设备(如磁盘的MBR) 3 读取并将控制权交给系统启动加载器(grub2) 4 启动加载器加载器配置,显示可用配置菜单 5 启动加载器加载内核及initramfs,置入内存 6 启动加载器将控制权交给内核 7 由内核查找initramfs中的硬件驱动,作为PID=1从initramfs执行/sbin/init (在RHEL7中,为systemd,并包含udev守护进程 8 Systemd执行initrd.target的所有单元(包含将文件系统挂载到/sysroot) 9 内核root文件系统从initramfsroot文件系统切换到/sysroot上的系统root文件系统 10 Systemd查找默认目标(target),然后启动该target的所有单元
其中,以上第10步的”Systemd查找默认目标(target),然后启动该target的所有单元“中的target指的是如下启动加载单元
- 破解Linux系统root用户密码
破解root密码的大致思路为,linux系统启动时会加载Initramfs文件系统,而Initramfs文件系统其实就是压缩的仅包含开机引导所必须的一小部分系统命令,在我们进入磁盘系统之前会有系统启动加载器grub2来加载内核和Initramfs文件系统,因为磁盘系统的root密码忘记了,所以我们必须修改步骤3的启动部分,告诉系统加载完内核后就停止,让我们进入Initramfs文件系统进行相关操作。当我们进入到initramfs文件系统后,因为当前的/sysroot为只读挂载,而重置passwd的话肯定需要写入权限,所以我们需要重新以写入权限挂载。最后切换根目录为/sysroot目录后在使用passwd命令就是对我们的磁盘系统进行密码重置了,具体操作如下:
实验环境:在Linux系统上通过KVM安装了一个rhel7系统,针对该虚拟机 中的系统进行root密码破解
1. 设置系统的root密码为一个任意值,模拟你不知道root密码的情况
2. 现在开始进入破解,在上一步结束后重启系统,在启动选单中(以下截图页面)按下"e"键
进入编辑页面
3. 修改linux16行中的ro以后的部分内容(就是红色线标记的部分),然后替换为rd.break
变更为如下所示,然后ctrl+x保存,继续下一步
4. 然后进入到initramfs文件系统,重新挂载/sysroot,使用rw方式进行挂载
5. 使用chroot命令,将shell切换到/sysroot下
6. 此时使用passwd命令,将密码修改成你要修改的密码即可。最后创建/.autorelabel文件,告诉SELinux重新进行文件标记
7. 连续两个exit,退出并重启系统
8. 至此,root的密码已被重置成功,尝试重新登录。