linux忘记root密码之后,可以通过修改bootloader启动项的参数,进入系统,重新通过passwd指令修改root 密码。

    下面介绍了常用的四种方法,在不同的场景可以选择不同的方法进行root密码重置。

老版的grub legacy单用户进入重置密码

    以为centos系统为例,手头常用的系统有rhel/centos 5、6系列都是使用的grub legacy。这类系统启动的时候,进入bootloader菜单页,随机选择内核按e进入编辑页

    选择kernel开头的项,然后按e进入kernel项编辑页

    在最后输入s或者single或者1,然后按Enter回车确定返回,按b进行启动。

    这种情况下一般会直接进入单用户系统(不需要输入root密码),然后通过passwd修改root密码

新版的grub 2.0进入重置密码

    centos7系列的系统使用的就是grub 2.0,以centos7.5为例。这类系统启动的时候,进入bootloader菜单页,随机选择内核按e进入编辑页。

    找到以linux或者linux16开头的项,在末尾加上init=/bin/sh

    按Ctrl + X引导系统启动,随后进入bash页面,通过mount -l查看发现当前根文件系统已经以ro的方式挂载,此时直接执行passwd命令无法写入shadow文件。

    重新挂载文件系统: mount -o remount,rw /

    然后执行passwd修改root密码即可。

镜像救援模式

    以centos7系统举例,先挂载镜像盘,在启动系统时进入bios(我使用的是虚拟机,直接按F2进入的bios配置)设置界面,将镜像启动优先级调高。

   配置之后启动镜像系统,选择救援模式启动。

     然后选择continue继续启动,然后选择ok->ok,进入bash界面。

    此时原来的系统磁盘设备被挂载到了/mnt/sysimage目录。使用chroot /mnt/sysimage更改工作目录到/mnt/sysimage中,然后执行passwd root重置root密码。

无救援模式-手动自救

    在一些系统中,使用镜像启动之后,却没有发现救援模式,此时在安装选择界面,按tab键,然后在命令行尾部输入 init=/bin/sh,然后回车启动进入bash页面。

     当前使用的是虚拟机环境,硬盘是SATA接口类型,一般第一块磁盘设备文件位sda,如果是IDE接口类型,一般第一块磁盘设备文件为hda。设备sda有两部分,一部分是引导分区设备sda1,另一个是使用lvm主动分区的设备sda2。

    在mnt目录创建一个挂载目录: mkdir  /mnt/sysimage

    执行挂载: mount /dev/sda2 /mnt/sysimage

     页面报错: mount unknown filesystem type 'LVM2_member'。备注:如果该操作可以顺利完成,则无需进行一下操作,可直接进行chroot /mnt/sysimage,然后执行passwd重置root密码。

    输入命令:/sbin/lvdisplay 查看逻辑卷信息

     从上述信息中得知该逻辑卷status状态不可用,执行命令激活逻辑卷: /sbin/vgchange -ay /dev/centos

 

     此时通过ls命令查看dm设备,发现多出来dm-2和dm-3设备,既对应逻辑卷root和swap。

     使用dmsetup命令确定逻辑卷与dm设备的对应关系,其中:之后的数字对应dm的编号。

     执行mount /dev/dm-3 /mnt/sysimage,成功将挂载lvm设备中的root根分区。

    然后执行/bin/chroot /mnt/sysimage和passwd root重置密码。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐