首页 > 编程笔记 > Linux笔记 阅读:2

Linux破解root密码的2种方式(附带实例)

在 Rocky Linux 9.x 中,破解密码有两种常用的方法,原理类似,下面分别介绍。

Linux破解root密码的第一种方法

在系统启动时,按“e”键进入 grub2 的编辑模式,找到 linux 开头的行(这行内容比较多,占了三行空间),把启动权限从“ro”改为“rw”,这样就不需要在破解时重新以“rw”权限挂载分区了。

然后,在行尾加入“init=/sysroot/bin/bash”,这样系统在启动之后,会提供一个 bash 操作界面,不需要输入密码而具有 root 权限,接下来就可以重新设置 root 密码了,如下图所示。


图 1 启动时直接调用bash界面

接下来按 Ctrl+X 快捷键继续启动 Linux 系统,就不再需要密码,而是直接进入 Linux 系统并得到 root 权限,如下图所示。


图 2 直接进入Linux系统

可以看到,我们已经进入了 Linux 系统,但是提示符是“:/#”,这是由于定义提示符的环境变量没有正确加载,但是并不影响系统命令的执行。接下来需要执行:
:/# chroot /sysroot/
# 因为系统根目录挂载在 /sysroot/ 目录中,所以需要通过 chroot 命令来切换系统根目录
:/# LANG=en_US.UTF-8
# 将系统语言环境修改为英文,passwd 命令的提示信息就不会出现乱码了(此命令不是必须执行)
:/# passwd
# 设置新的 root 密码
:/# touch /.autorelabel
# 更新 /.autorelabel 文件,让系统在启动时自动更新 SELinux 安全上下文
:/# exit
# 退出 chroot 环境
:/# reboot
# 重启。重启之后,就可以使用新的 root 密码登录了
重启 Linux 服务器,密码就可以修改了。

需要解释一下 chroot 命令,此命令的作用是改变系统根目录,也就是可以把根目录暂时移动到某个目录当中。我们是通过 "init=/sysroot/bin/bash" 直接获取的 bash 进入系统的,因此现在所在的根目录并不是真正的系统根目录,而是一个模拟根目录,真正的系统根目录被当成外来设备放在了 /sysroot/ 目录中,需要通过 chroot 命令进行切换。

还需要解释一下 "touch /.autorelabel" 命令,在 Rocky Linux 9.x 中,SELinux 被更全面地应用,而我们在修改密码时会修改 /etc/shadow 文件,这时需要更新 SELinux,否则系统将会产生无法登录的错误。"touch /.autorelabel" 命令会让 SELinux 在启动时重新扫描系统文件,这条命令必须执行,否则密码破解会失败。

Linux破解root密码的第二种方法

第二种方法同样需要重启系统,按 "e" 键进入 grub 编辑模式。找到 linux 开头的内核参数行,在行尾加入 "rd.break" 内核参数,注意和前面的内容以空格隔开,如下图所示。


图 3 修改为rd.break模式

接下来按 Ctrl+X 快捷键继续启动 Linux 系统,就不需要密码了,而是直接进入 Linux 系统并得到 root 权限,如下图所示。


图 4 通过rd.break模式进入Linux系统

然后可以执行以下命令:
switch_root:/# mount -o remount,rw /sysroot/
# 以读写权限重新挂载 /sysroot 目录。使用第一种方法时我们处于 grub2 编辑模式,修改了“rw”权限,
# 因此不需要重新挂载
switch_root:/# chroot /sysroot/
# 把 /sysroot/ 目录重新挂载为根目录
sh-4.2# LANG=en_US.UTF-8
# 修改系统语言环境为英文。passwd 命令的提示信息就不会出现乱码了(此命令不是必须执行)
sh-4.2# passwd
# 设置新的 root 密码
sh-4.2# touch /.autorelabel
# 更新 /.autorelabel 文件,让系统启动时自动更新 SELinux 安全上下文
sh-4.2# exit
# 退出 chroot 环境
switch_root:/# reboot
# 重启。重启之后,就可以使用新的 root 用户密码登录了
两种方法都可以破解 root 用户的密码,虽然原理不相同,但是作用与操作方式均类似,笔者建议掌握其中一种即可。

相关文章