在操作系统使用过程中,难免会有忘记登录密码的情况出现,特别是对于Linux操作系统来说,作为服务器操作系统来说,很多时候都没有必要频繁去执行登录操作,时间长了就会忘记原本的登录密码了,重装系统对于正在运行的业务系统来说肯定是不可能的,这个时候就需要恢复登录密码了,其实在Linux操作系统中有自己的密码恢复机制,Linux6.0及之前的版本,密码恢复的过程都是差不多了过程,但是在7.0以后对于操作过程做了一点改变,下面先一起来看看6.0版本的密码恢复过程以及可以进行的防护措施。

一、CentOS 6.0密码恢复

本次演示以centos 6.6版本操作系统为例,在虚拟机中进行安装测试的。

  1. 忘记了操作密码后,这个首先选择重启操作系统,重启操作系统后会显示如下引导界面。
  2. 在如上引导界面中,可通过“上”“下”去选择需要启动的OS,这里会有一个默认的倒计时时间,然后默认进入第一个OS中进行启动,但是在这里,我们想要恢复密码的话,不应该进入系统当中,通过任意按键操作取消默认倒计时时间,然后通过按键字母“e”进入到系统GRUB模式,进入后如下图所示。
  3. 如上图在第二步的基础上,选择第二个选项,然后按键字母“e”进入到内核设定界面中,选中按“回车”是没有作用的,如下图所示。
  4. 在这个界面当中,在光标所在的该行的最末尾处,输入数字1(这里的1表示进入到Linux系统启动级别1当中,1为单用户模式,),在数字1的前后都有一个空格,如下如所示。
  5. 输入数字1后,选择“回车”,此时会回到原本界面当中去。
  6. 回到当前界面后,从图中红框中可以看出,“e”是为编辑,那么这里我们已经进去编辑好了,这时通过提示可以看出,输入字母“b”可以进行启动,启动后如下图所示。
  7. 启动完成后,可进去init 1但用户模式下,并且在当前模式下是以root用户进行登录的,没有密码,我们可以通过passwd去设定或者修改用户密码,如下图所示。
  8. 通过passwd admin(username)更改其他用户密码;通过passwd修改root用户密码;修改完成后通过reboot重启OS即可。
  9. 重启完成后即可以修改过后的密码登录到系统当中。
二、防护密码恢复措施

从上述过程中我们可以看出,只要别人能够操控当前的物理主机,那么即可完成密码破解过程,这样的操作系统对于别人来说是不设防的,但是通过什么样的方式可以起到对密码进行防护的效果呢!!!
在这个过程当中我们可以通过GRUB程序来实现。对于GRUB是什么呢,下面一起来看看。

1、GRUB介绍
  • GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
  • GNU GRUB 和GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。
    在X86架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流。
    Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了。
    在PowerPC 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机用的是IBM PowerPC处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统。
    因为X86架构的机器仍是主流, 所以GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器。
    *引导过程
    由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。
    装载GRUB和操作系统的过程,包括以下几个操作步骤:
    装载记录
    基本引导装载程序所做的的事情就是装载第二引导装载程序。
    装载Grub
    这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。
    装载系统
    如linux内核。GRUB把机器的控制权移交给操作系统。
    不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。
    设备名称
    GRUB不区分IDE硬盘和SCSI硬盘,统一使用hdx来标识。软盘使用fdx来标识,x为硬盘号,x从0开始计数。
    GRUB使用(hdx,y)标识某个硬盘中的某个分区,x表示硬盘号,y表示分区号,x和y都从0开始计数。
    在windows中,系统的第一个硬盘驱动器表示为(hd0),其中的第一个分区表示为(hd0,0),以此类推。
    (hd0,0)。表示C盘。
    (hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)
    由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。
    一般windwos的分区都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(fd)标识,第一个软驱用(fd0)表示。
    在Linux系统中,如ubuntu,(hdx,y)中的y是从1开始计数的。第一逻辑分区用(hd0,5),第二逻辑分区用(hd0,6)来表示

    一些用户常困惑于GRUB中根文件系统(root filesystem)这一术语的用法。GRUB的根文件系统与Linux的根文件系统是没有关系的!
2、密码防护措施

上面我们讲到了GRUB的作用,在防护措施当中,实际上我们利用GRUB启动程序,在执行密码恢复前在加上一重密码保护,从而实现防护的效果,下面再具体来看看。

  1. 进入系统当中,在终端界面输入指令grub-md5-crypt或者grub-crypt,输入完成后会提示输入密码并且确认密码,最终会得出一个加密的值出来,这里采用grub-md5-crypt和grub-crypt是两种不同的加密方式,后者加密长度更长,相对更安全,那么这里我们选择采用grub-crypt的加密方式,将输入密码后得出的一串加密值进行复制备用。
  2. 然后采用vim编辑器进入文件/boot/grub/grub.conf中,vim /boot/grub/grub.conf。
  3. 在箭头所示区域“title”上面添加一行,内容为password --md5 (加密的密码字符串),如下如所示。
  4. 插入完成后,保存退出,然后重启OS。
  5. 进入系统引导界面。
  6. 通过按键字母“e”发现,没有任何效果,通过下面的提示,说明需要按键字母“p”,然后键入一个密码,输入按键“p”,发现显示需要输入密码才可执行后续操作。
  7. 输入刚才在系统中通过grub-crypt设定的正确密码才可以进行后续步骤,否则就会卡在当前步骤,无法进行密码恢复。
    如果操作系统在设定了密码防护过后,发生了密码丢失的情况,此时可以通过光盘镜像引导的方式进行恢复即可。