Linux学习之CentOS(二十二)--进入单用户模式下修改Root用户的密码_Linux

在上一篇随笔里面详细讲解了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里面来看看
我们发现下面的英文提示已经变了,之前可以按键盘上的 e 键进入到GRUB里面,现在按 e 键已经没用了,此时提示我们按 p 键来输入GRUB的密码才能进入到GRUB里面
此时我们输入之前设置的GRUB密码即可,然后界面就会进入到我们熟悉的修改GRUB那里了。

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索修改root用户密码
,以便于您获取更多的相关知识。

时间: 2024-10-29 14:51:34

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

Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定的方法_Linux

本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲解了Linux系统下的网络环境配置等知识,我们了解了一些关于网络配置的一些基本命令.在这里将补充一些Linux系统下有关网卡的一些高级命令. ①mii-tool 命令 mii-tool命令我们可以用来查看网卡状态信息,包括了以太网连接是否正常,使用的是哪种型号的网卡等等 [root@xiaoluo

激活引入非线性,池化预防过拟合(深度学习入门系列之十二)

系列文章: 一入侯门"深"似海,深度学习深几许(深度学习入门系列之一) 人工"碳"索意犹尽,智能"硅"来未可知(深度学习入门系列之二) 神经网络不胜语,M-P模型似可寻(深度学习入门系列之三) "机器学习"三重门,"中庸之道"趋若人(深度学习入门系列之四) Hello World感知机,懂你我心才安息 (深度学习入门系列之五) 损失函数减肥用,神经网络调权重(深度学习入门系列之六) 山重水复疑无路,最快下降

Bootstrap <基础二十二>超大屏幕(Jumbotron)

原文:Bootstrap <基础二十二>超大屏幕(Jumbotron) Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: 创建一个带有 class .jumbotron. 的容器 <div>. 除了更大的 <h1>,字体粗细 font-weight 被减为 200px. 下面的实例演示了这点: <!DOCTYPE

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

Android简明开发教程二十二:使用资源Resources

在前面的例子中,我们忽略了一个重要的原则,在代码和Layout中,直接使用了字符串常量,比如: <Button android:text="Pattern" android:id="@+id/btnPattern" android:layout_width="wrap_content" android:textColor="@color/black" android:checked="true" an

Windows 8风格应用开发入门 二十二 MessageDialog

MessageDialog概述 MessageDialog指的就是对话框. 对话框的命令栏中最多包含三个命令.如果我们指定任何命令,将会有一个默认命令添加到对话框中,目的是关闭对话框. 对话框弹出后界面中所有元素将在对话框下面显示,并且将会阻塞任何触摸事件直到用户进行响应对话框. 另外对话框应该尽量少用. 注意:Windows 8风格应用中取消了MessageBox对象,取而代之的是MessageDialog对象. MessageDialog常用属性和方法 MessageDialog类包含两类构

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十二)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十二)重构 – 让代码插上翅膀自由飞翔 上一节,我将游戏地图模式进行了一次重大的变动,这在实际开发中意味着项目大规模重置,虽然表面上显得游刃有余,仅仅一个AllMove()方法的改变即实现了完美转型,这全得归功于前20节所搭建起的相对高度可扩展平台.但是,随着开发不断深入,我慢慢的感到些许的不安,因为代码上的日益松散与结构的渐渐稀疏如同Windows系统的磁盘碎片与日俱增,未来维护时的烦琐与痛心疾首已历历在目

微信小程序把玩(二十二)action-sheet组件

原文:微信小程序把玩(二十二)action-sheet组件 action-sheet组件是从底部弹出可选菜单项,估计也是借鉴IOS的设计添加的,action-sheet有两个子组件, action-sheet-item为每个选项,action-sheet-cancel取消选项,与action-sheet-item中间会有间隔,并且点击会触发action-sheet监听事件 主要属性: wxml <!--触发action-sheet事件--> <button type="prim

云计算设计模式(二十四)——仆人键模式

云计算设计模式(二十四)--仆人键模式 使用一个令牌或密钥,向客户提供受限制的直接访问特定的资源或服务,以便由应用程序代码卸载数据传输操作.这个模式是在使用云托管的存储系统或队列的应用中特别有用,并且可以最大限度地降低成本,最大限度地提高可扩展性和性能. 背景和问题 客户端程序和网络浏览器经常需要读取和写入文件或数据流,并从一个应用程序的存储空间.通常,应用程序将处理的运动数据,或者通过从存储读取它,并将其传输到客户端,或通过从客户机读取该载流并将其存储在数据存储中.然而,这种方法吸收了宝贵的资