单用户模式下修改Root用户的密码

时间:2021-08-29 09:26:31

单用户模式下修改Root用户的密码

在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab 这个文件我们就能看到:

单用户模式下修改Root用户的密码
[root@xiaoluo ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:
单用户模式下修改Root用户的密码

这里我们看到系统的默认启动级别是5,也就是有图形界面的那个。

但是在现实生活中可能会出现这种问题,我们可能忘记了一台主机的root密码,但是我们又需要通过root用户登录该系统去处理一些事情,这个时候我们怎么办呢?我们看到在Linux的启动级别中有一个单用户模式启动,也就是启动级别1,当我们如果忘记了root用户的秘密,但是又需要修改root密码的时候,这个时候我们就要通过在启动的时候给系统的内核传递一个参数 1 或者 single 来告诉内核,我需要以单用户模式登陆操作系统,这个时候我们就能能够通过passwd 命令来重设root用户的密码。具体操作是怎样的呢?咱们有图有有真像!!

首先我们重启我们的系统(我这里是CentOS),然后在界面启动时让它停留一下,随便按一下键盘上的一个键,此时就会进入到操作系统配置引导界面

单用户模式下修改Root用户的密码

 

还记得上一篇随笔里面/boot/grub/grub.conf这个文件里的第一个 title 字段吗? 没错,每一个title都是一个操作系统的配置选项,这里我们只有一个,也就是上面图片显示的那个,如果有多个title字段,这里就会列出来供我们选择不同的操作系统。

好了,通过下面的英文提示我们发现按下键盘上的 e 键就可以进入到编辑界面

单用户模式下修改Root用户的密码

 

看到这个界面是不是很熟悉呢?没错,这三个选项就是我们 /boot/grub/grub.conf 文件里的配置信息,我们通过查看这个文件的内容来看一下:

单用户模式下修改Root用户的密码
[root@xiaoluo ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
单用户模式下修改Root用户的密码

这时我们需要将光标移动到第二个选项,也就是Linux内核那里,同样按下键盘上的 e 键进入到编辑界面,此时我们在后面追加参数 1 或者参数 single就可以告诉Linux系统的内核,我需要以单用户的模式登陆该系统。

单用户模式下修改Root用户的密码

然后我们回车,进入到上层的界面,此时按下键盘上的 b 键就是启动操作系统,此时我们的Linux操作系统就是以单用户的模式登陆了。我们发现系统非常快速的就进入到了命令行模式下的界面,因为单用户模式是不会启动任何服务的,同时也不需要输入root密码,就能直接进入到root用户下,此时我们就可以通过passwd 命令来重置我们的root用户的密码

单用户模式下修改Root用户的密码

 

然后我们通过exit命令就可以退出单用户模式,此时操作系统内核就会根据我们之前看到的 /etc/inittab 配置文件中设置的默认启动级别来启动。

这样我们就可以通过在进入GRUB引导时在内核参数里面追加参数 1 或者 single 来进入单用户模式来修改我们的root用户密码。

但是,请注意,因为上面的操作只需要通过单用户模式就可以修改我们的root用户密码,所以说一旦别人有机会接触到我们的服务器主机,那么root用户的密码就很容易被别人修改了,这样当然是非常的不安全的,所以我们还是需要通过GRUB加密来对开启一层密码防护。

通过在 /boot/grub/grub.conf 启动配置中加入以下类似的代码来对grub进行加密:

password --md5 $1$6H92B1$PzoPV63kTMk4uEhZQTAZ//

其中后面那一串是MD5加密算法,这个我们可以通过 grub-md5-crypt 这个命令来生成加密后的算法

[root@xiaoluo ~]# grub-md5-crypt 
Password: 
Retype password: 
$1$UGA2B1$DriIdrVTEgVg95fHHX4H./
[root@xiaoluo ~]# 

在上面的Password、Retype password那里输入我们需要设置的密码,然后就能生成MD5算法加密后的密码,我们将这个加密后的密码添加到

/boot/grub/grub.conf 这个配置文件里即可,例如:

单用户模式下修改Root用户的密码
[root@xiaoluo ~]# vi /boot/grub/grub.conf 
password --md5 $1$UGA2B1$DriIdrVTEgVg95fHHX4H./

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
单用户模式下修改Root用户的密码

这个时候我们再次重启一下系统,试着进入到GRUB里面来看看,

单用户模式下修改Root用户的密码0

 

我们发现下面的英文提示已经变了,之前可以按键盘上的 e 键进入到GRUB里面,现在按 e 键已经没用了,此时提示我们按 p 键来输入GRUB的密码才能进入到GRUB里面

 

单用户模式下修改Root用户的密码

此时我们输入之前设置的GRUB密码即可,然后界面就会进入到我们熟悉的修改GRUB那里了。

所以说通过GRUB的加密算法我们可以对进入GRUB进行加密,这样就能防止别人恶意进入单用户模式,从而修改root密码了!!

当然,如果我们连这个GRUB的秘密都忘记的话,并且又忘记了root密码,那就真的不能登陆到root用户了。。。。

 

本篇随笔主要记录了如何通过单用户模式来修改root用户的密码,并通过设置grub的MD5加密算法来对进入grub进行加密,从而限制别人轻易进入单用户模式,在以后的学习Linux过程中,将继续记录学习Linux的心得!!!!

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq.com  / lzp501395377@gmail.com

 

 

Linux

 
摘要: 本篇随笔主要介绍了在Linux下如何通过单用户模式来修改root用户的密码,以及通过设置grub的MD5加密算法来对进入grub进行加密,从而限制别人轻易进入单用户模式。。。 阅读全文
posted @  2013-05-19 21:54 xiaoluo501395377 阅读(248) |  评论 (0)  编辑
 
摘要: Linux系统启动详细解释 阅读全文
posted @  2013-05-19 15:31 xiaoluo501395377 阅读(427) |  评论 (7)  编辑
 
摘要: CentOS6.4下修改MySQL编码方法。。。 阅读全文
posted @  2013-05-14 15:22 xiaoluo501395377 阅读(86) |  评论 (0)  编辑
 
摘要: 在Linux中,有很多的压缩命令。利用这些压缩命令,可以方便的从网络上下载大型的文件。同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆,会对这些命令所压缩的文件进行一些特殊的命名方式。本篇随笔将主要记录一下Linux系统常见的压缩命令。 阅读全文
posted @  2013-04-26 20:33 xiaoluo501395377 阅读(738) |  评论 (2)  编辑
 
摘要: 在结束了第二期的广交会实习之后,又迎来了几天休闲的日子,继续学习Linux。在上一篇随笔 Linux学习之CentOS(十七)--与Linux文件和目录管理相关的一些重要命令① 中,详细记录了与Linux文件和目录管理相关的一些重要命令,包括 目录与路径相关的命令(cd、pwd、mkdir、rmdir等)、管理文件与目录的命令(ls、cp、rm、mv等)、查看文件内容命令(cat、more、less等),在这一篇随笔中,将继续详细记录与Linux文件和目录管理相关的其他一些重要命令。 阅读全文
posted @  2013-04-26 00:19 xiaoluo501395377 阅读(633) |  评论 (0)  编辑
 
摘要: 我们都知道,在Linux系统中,基本上任何我们需要做的事都可以通过输入命令来完成,所以在Linux系统中命令非常的多,我们不可能也没必要记住所有的这些命令,但是对于一些常用的命令我们还是必须要对其了如指掌的。 当然,即使这样,我们需要掌握的常用的命令也有百余条之多,我们难道就专门针对这百余条常用的命令来对其进行死记硬背吗?就像在学java时,我们学习其23种设计模式一样,我们不能单纯为了只是为了学习那23种设计模式而去学习,我们更重要的是学习这些模式,然后在实际项目中多去用它。在学习23种设计模式时,当然不推荐花几天时间就死死地抱着那23种模式去硬啃,这样不科学而且学完后又容易忘。所以我之前在学习设计模式时,是根据在学习java的每个知识点时需要用到了什么模式,然后再去有针对性的学习一种设计模式。例如我在学习集合时,对于Set(TreeSet)、Map(TreeMap)这块,其用到了策略模式,所以此时我就去单学习策略模式,然后再回过头来看一下集合这块它是怎么使用策略模式的。又比如在学习Swing/AWT时,我们用到了观察者模式,所以此时我就先学习了观察者模式的定义,然后实现自己的 阅读全文
posted @  2013-04-21 14:19 xiaoluo501395377 阅读(831) |  评论 (3)  编辑
 
摘要: 我们知道Linux系统最主要的特点之一就是——Linux系统是多用户、多任务的操作系统。 何为多用户?就是同一个Linux系统上,我们可以有多个用户同时登陆上去对其进行操作。何为多任务?简而言之就是如果在系统上同时运行多个应用程序时,系统并不会在每次执行完一个程序以后再执行下面的程序,在多任务的操作系统下,cpu会对要执行的程序进行调度,例如在某段时间里执行这个程序,过段时间cpu又被分配到执行其他程序,这样直到最后,多个应用程序都会执行完毕,在多任务下,cpu就是这样通过调度来不断执行应用程序,这样就大大提高了cpu的使用率。 阅读全文
posted @  2013-04-20 20:53 xiaoluo501395377 阅读(545) |  评论 (1)  编辑
 
摘要: 纵观之前的14篇Linux学习系列随笔,基本上是学习了Linux的一些常用命令,以及如何在Linux下进行j2ee环境搭建等知识,应该说并没有深入到Linux的学习当中,也没有找一本Linux的书籍来细看,所以从这篇随笔开始,自己准备好好地跟着Linux的书籍或者其他资料来深入的了解、学习Linux。为此,特地从图书馆借来了一本书,这本书应该也是Linux学习的入门书籍了--《鸟哥的Linux私房菜--基础学习篇》,现在就先从基础学习篇开始学习啦,后续还会继续学习服务器篇。。。 阅读全文
posted @  2013-04-20 00:27 xiaoluo501395377 阅读(725) |  评论 (0)  编辑
 
摘要: SSH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定。ssh协议目前有SSH1和SSH2,SSH2协议兼容SSH1。目前实现SSH1和SSH2协议的主要软件有OpenSSH和SSH Communications Security Corporation 公司的SSH Communications 软件。前者是OpenBSD组织开发的一款免费的SSH软件,后者是商业软件,因此在linux、FreeBSD、OpenBSD、NetBSD等免费类UNIX系统种,通畅都使用OpenSSH作为SSH协议的实现软件。 阅读全文
posted @  2013-04-08 21:58 xiaoluo501395377 阅读(699) |  评论 (4)  编辑
 
摘要: 说到数据库,我们大多想到的是关系型数据库,比如mysql、oracle、sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱不得不首先推荐的是mysql数据库了,而且Mysql数据库的第一个版本就是发行在Linux系统上的。 阅读全文
posted @  2013-04-07 00:51 xiaoluo501395377 阅读(1141) |  评论 (1)  编辑
 
摘要: crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。 在Linux系统中,Linux任务调度的工作主要分为以下两类: 1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存 2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置 阅读全文
posted @  2013-04-06 16:41 xiaoluo501395377 阅读(841) |  评论 (4)  编辑
 
摘要: 这篇随笔真是让我折腾了2天2夜才敢下笔写!!!为什么呢?之前是通过去Samba的官网下载的源码包,也就是.tar.gz来进行安装配置,不过这个让我折腾来折腾去就是没折腾出结果,还花了我整整1天1夜的时间,最后实在是熬不住了,想通过yum来重新进行Samba服务器的安装与配置,但是要使用yum首先必须是CentOS要联网,而我又没有找到Samba的rpm包,而之前一直没有搞定在虚拟机中的CentOS上网的问题,所以新的纠结又开始了。。。。。。 阅读全文
posted @  2013-04-06 00:57 xiaoluo501395377 阅读(1046) |  评论 (2)  编辑
 
摘要: 这篇随笔应该说跟CentOS的学习关系不是很大,但是却关系到了我接下来的CentOS学习。。。。。。 阅读全文
posted @  2013-04-05 19:43 xiaoluo501395377 阅读(822) |  评论 (1)  编辑
 
摘要: Linux下对网络环境进行配置的三种方法 阅读全文
posted @  2013-04-05 15:37 xiaoluo501395377 阅读(756) |  评论 (2)  编辑
 
摘要: 硬盘的分区主要分为基本分区(Primary Partion)和扩展分区(Extension Partion)两种,基本分区和扩展分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说 它必须还要进行二次分区。那么由扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),况且逻辑分区没有数量上限制。 阅读全文
posted @  2013-04-03 00:13 xiaoluo501395377 阅读(966) |  评论 (2)  编辑
 
摘要: 因为是做j2ee后台开发的,所以在Linux上搭建j2ee环境是每一个java程序员所需要掌握的。所以这篇随笔主要记录一下j2ee环境搭建过程,包括jdk、tomcat、eclipse的安装,(对于mysql数据库的安装,将会在后面的随笔中记录)。 阅读全文
posted @  2013-04-01 22:47 xiaoluo501395377 阅读(965) |  评论 (3)  编辑
 
摘要: VMware-Tools 主要的功能就是让用户在虚拟机和真实系统之间实现无缝切换,这个功能很方便。当然VMware-Tools最主要是实现linux和windows的文件共享。 阅读全文
posted @  2013-04-01 20:26 xiaoluo501395377 阅读(218) |  评论 (0)  编辑
 
摘要: 在Linux系统中,如果要使用硬盘、光盘、软盘或MO盘等存储设备,必须先进行挂装(Mount)。当存储设备挂装完成之后,就可以将其作为一个目录来进行访问了。 阅读全文
posted @  2013-04-01 11:28 xiaoluo501395377 阅读(310) |  评论 (2)  编辑
 
摘要: 对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。但是通常我们刚安装完Linux系统,然后进去以后是图形的界面,(如果要切换到开发模式,使用快捷键Ctrl + F2即可),从开发模式返回到图形界面则使用快捷键(Ctrl + F1),或者在命令行里输入命令 startx 命令就可以切换到图形界面。 阅读全文
posted @  2013-04-01 09:36 xiaoluo501395377 阅读(736) |  评论 (0)  编辑
 
摘要: 文件系统是Linux系统中最基础的一环,但是又是学习Linux系统必学的。。。 阅读全文
posted @  2013-04-01 00:47 xiaoluo501395377 阅读(865) |  评论 (0)  编辑
 
摘要: linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是*处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。 阅读全文
posted @  2013-03-31 23:12 xiaoluo501395377 阅读(1178) |  评论 (2)  编辑
 
摘要: CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。 阅读全文
posted @  2013-03-31 19:10 xiaoluo501395377 阅读(1873) |  评论 (11)  编辑

 

 
 
分类:  Linux
标签:  linuxCentOS