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

[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:

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

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

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

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

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

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

[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

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

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

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

0

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

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

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

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

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

Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码的更多相关文章

  1. CentOS单用户模式下修改ROOT密码和grub加密

    Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务.如果系统管理员需要进行系统维护或系统出现启动异常时 ...

  2. 单用户模式下修改root密码

    1.重启或者开机时,在倒数3秒的界面按下任意键. 2.该界面有如下提示(e 编辑 a 更改内核选项 c 命令行  b 启动),所以我们按下"e"编辑. 3.上下键选中第二行再按下& ...

  3. 在单用户模式下修改CentOS的root密码

    我们在使用CentOS的过程中可能会发生忘记root用户密码的情况,本文就从应用的角度简单介绍一下如何在单用户模式下修改root用户的密码. 开启CentOS,进入系统启动菜单 将光标停留在系统开机时 ...

  4. centos单用户模式:修改ROOT密码和grub加密

    centos单用户模式:修改ROOT密码和grub加密 CentOSLinux网络应用配置管理应用服务器  Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 ...

  5. CentOS6.8单用户模式下修改密码

    CentOS6.8单用户模式下修改密码 1. 选择进入菜单menu界面,在开启系统出现如下界面时,按Esc键(只需按一下) 2. 然后进入到如下界面 3. 上图中红色矩形类的内容,按“a”键可以修改内 ...

  6. CentOS 单用户模式:修改Root密码和grub加密[转]

    原文出处: http://zhengdl126.iteye.com/blog/430268 Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系 ...

  7. [转] Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装、配置

    本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文 ...

  8. Centos7在单用户模式下重置root密码

    1.启动Centos7 ,按空格让其停留在如下界面: 鼠标上下可以选择启动内核,默认选择第一个内核开机 2.按e键进入编辑模式 e 按下e键后我们可能无法看到我们需要编辑的区域,这是因为在较新版本的C ...

  9. Linux单用户模式(修改密码、运行级别)方法详解

    很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...

随机推荐

  1. ASP.NET MVC 让@Html.DropDownList显示默认值

    在使用@Html.DropDownList的过程中,发现它的用法很局限,比如在加载的时候显示设定的默认项或者调整它的显示样式,在网上查了一些资料,终于把这个问题解决了. 一.View代码 @using ...

  2. SQL语句查数据库中某一列是否有重复项

    Select 列名,COUNT(列名)FROM 表名GROUP BY 列名HAVING COUNT( 列名 ) 〉1

  3. Visual Studio Emulator for Android 初体验

    Visual Studio Emulator for Android已经推出一段时间了,但一直没有用过.前两天下载安装用了下,整体感觉比谷歌自带的模拟器强多了.Visual Studio Emulat ...

  4. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  5. python爬虫学习(6) —— 神器 Requests

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...

  6. ORACLE 利用 REPLACE函数替换字段字符串

    REPLACE(string,s1,s2) string 希望被替换的字符或变量 s1 被替换的字符串 s2 要替换的字符串 SQL> select replace(he love you,he ...

  7. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  8. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  9. 理解HTML语义化

    1.什么是HTML语义化? <基本上都是围绕着几个主要的标签,像标题(H1~H6).列表(li).强调(strong em)等等> 根据内容的结构化(内容语义化),选择合适的标签(代码语义 ...

  10. javascript中一些常见的兼容性问题

    下面是一些Javascript的IE和Firefox(火狐)兼容性的常用例子 1. document.formName.item("itemName") 问题 说明:IE下,可以使 ...