Linux忘记root密码怎么办?

时间:2022-01-25 06:43:12

在机器启动到grub进行操作系统选择时,

对于Redhat linux:

用上下键将光标放在linux系统上,按“e”

在有kernel那一行按“e”,输入“空格 single”,然后回车

按“b”,启动,系统会自动进入单用户模式,

使用passwd root命令,按提示输入新口令

修改口令后,输入reboot 命令重启系统即可

对于SUSE linux:

先按"esc"键,从grub的图形界面转至字符界面

然后,用上下键将光标放在linux系统上,按“e”

在有kernel那一行按“e”,输入“空格 1”,然后回车

按“B”启动,系统会自动进入“runlevel 1”。

然后执行“passwd”,按提示输入新口令

修改完口令后,输入reboot命令重启系统即可。

---------------------------------------------------------------------  

一. lilo
     1. 在出现 lilo: 提示时键入 linux single
        画面显示 lilo:   linux single
     2. 回车可直接进入linux命令行
     3. #vi /etc/shadow
        将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
        第一行将类似于
        root::......
        保存
     4. #reboot重启,root密码为空

二. grub
     1. 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos哟),然后按e键
     2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
     3. 修改现在见到的命令行,有两种方法:
        a.加入single,结果如下:
          kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
        b.在行末加入run level,比如想进入run level 3,结果如下:
          kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ 3
          由于是忘记root密码,则可进入run level 1,结果如下:
          kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ 1
     4. 回车返回,然后按b键启动,即可直接进入linux命令行
     5. #vi /etc/shadow
        将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
        第一行将类似于
        root::......
        保存
     6. #reboot重启,root密码为空
     7. 这是网上的教程,但我实际操作时,老提示不能修改只读文件,于是先用chmod +w shadow命令将shadow文件改为可写。之前
        所作的修改,留下了.shadow.swp文件,使用vi shadow就没有问题了。

另外还有一类,可能是比较老版本的linux,不得而知,方法如下:
  随着Linux的流行,越来越多的服务器上安装了Linux操作系统。但是问题也随之而来——忘记了服务器的密码怎么办?不用着急,使用下面介绍的三招杀手锏就可以使你在不重装Linux的情况下轻松解决密码问题。

  第一招:如果你的系统是通过LILO管理器启动的,可以在LILO启动提示符"LILO boot:"后输入"Linux single"(不包括两个双引号),回车后即可启动Linux系统进入单用户模式。这时候你就可以用passwd命令来修改你的密码了。修改完成后重新启动系统就可以使用新的密码登录了。这一着在一些系统下行得通,但是在另一些系统下则行不通。这是你可以试试用第二招来清除Linux的密码。

  第二招:用安装系统时制作的boot盘启动,当出现"LILO boot:"提示符时输入"Linux mount =/dev/xxxx" (不包括两个双引号),其中xxxx代表Linux所在的分区。在Linux中,第一个IDE硬盘的设备名是hda,所以第一硬盘的第一分区为hda1,第二分区为hda2,依此类推;第二个IDE硬盘的设备名是hdb,同理,第二硬盘的第一分区为hdb1,第二分区为hdb2,依此类推;如果你使用的是SCSI硬盘,则第一硬盘的设备名是sda,第一硬盘的第一分区为sda1,第二分区为sda2,依此类推;第二个SCSI硬盘的设备名是sdb,则第二硬盘的第一分区为sdb1,第二分区为sdb2,依此类推。正确输入硬盘的设备名及分区号后启动Linux,系统将自动把Linux的分区mount到/mnt下。这时候你只要进入/mnt/etc下,用vi命令打开passwd文件,将root行中的密码去掉,退出并保存文件。然后重新引导系统后,在超级用户下执行password命令,重新生成一个密码即可。这里需要注意一个问题:如果你的系统同时含有passwd和shadow两个文件,则需要修改的密码文件是/mnt/etc下的shadow。因为shadow是passwd的一个映像,是真正存放密码的文件。如果你的Linux系统不能识别"Linux mount =/dev/xxxx"命令也不要紧,我们还有第三招——通用方法来解决它。

  第三招:使用应急引导盘。目前各个版本的Linux都带有随盘发行的应急引导盘,一般有两张:一张是boot盘,另一张是root盘。这两张盘一般是以img或gz格式的文件存放在光盘上,文件名各个版本都差不多,主文件名形如rescxxxx,扩展名是.img或.gz。我所使用的是rescboot.img和rescroot.img。找到这两个文件后使用随盘附带的IMG文件写盘工具rawrite.exe将rescboot.img和rescroot.img分别写入两张空白磁盘,然后使用这两张盘引导Linux。启动后在超级用户下执行如下命令:

  :mount/dev/xxxx/mnt
  #cd/mnt
  vi/mnt/etc/passwd

  然后将超级用户密码删除即可,删除方法同第二招。命令中的xxxx的含义与第二招中的相同。当然,如果你的系统同时含有passwd和shadow两个文件,则只需要修改/mnt/etc下的shadow即可解决问题。