救援模式(Rescue Mode)、单用户模式(Single-User Mode)、紧急模式(Emergency Mode)的区别与联系
前天聚餐的时候一航和启飞学长讲到RUCTF中更改root密码要进入单用户模式,我插了一句“有的系统显示的是救援模式”,说完后心里一直很虚。。。(技术上的事还是想好再说)今天查了一下文档,大致弄明白了救援模式(Rescue Mode)、单用户模式(Single-User Mode)、紧急模式(Emergency Mode)的区别了,分享一下;)
-----------------------------------------------------------------
1.runlevel:
一句话:运行级别指的是Linux等类Unix操作系统下不同的运行模式。
运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多。运行级别决定了计算机启动后的运行环境,根据Linux Standard Base,标准的运行环境可以分为7个:
0 Halt Shuts down the system.
1 Single-user mode Mode for administrative tasks.(注意这里,说明系统返回的shell有root权限)
2 Multi-user mode Does not configure network interfaces and does not export networks services.
3 Multi-user mode with networking Starts the system normally.
4 Not used/user-definable For special purposes.
5 Start the system normally with appropriate display manager (with GUI) Same as runlevel 3 + display manager.
6 Reboot Reboots the system.
2.什么情况下要进入Rescue/Single-User/Emergency Mode?
一句话:无法正常由磁盘进入normal user mode(runlevel 3或5)
例如:
GRUB被(微软)摧毁了;)
某些硬件驱动文件损坏(比如nouveau)
密码忘了
3.三者的区别(这里参照的是RedHat系列的文档)
一句话:单用户模式是一个runlevel,我们可以在这里用具有root权限的shell更改root密码。至于怎么进入单用户模式有很多种,例如在磁盘boot文件损害时从其他介质启动(救援模式)。至于紧急模式,则是在init文件都损坏的情况下使用(也具有root权限),此时获得的环境最简单(重启都得靠拔电源)。
单用户模式:
在单用户模式,电脑为开机进入runlevel 1,本机档案系统已经被挂载,不过您的网路尚未启动,您可以使用一个系统维护的 shell。单机使用者模式与救援模式不同,它会试着自动挂载档案系统,如果您的档案系统无法被成功挂载,请勿使用单机使用者模式。而且如果系统上的执行层级 1 的设定已经毁损,您也无法使用单机使用者模式。
救援模式:
救援模式能让使用者由光碟(或其它开机方法)启动基本的 Red Hat Enterprise Linux 环境;而不是藉由系统硬盘来启动。在正常操作中,Red Hat Enterprise Linux 系统会使用硬盘里的档案来进行所有工作 — 执行程式、储存档案等等。然而,在某些情况下,Red Hat Enterprise Linux 会无法完整存取系统的硬盘。透过使用救援模式,即使您无法由某个硬盘执行 Red Hat Enterprise Linux,您依然能够存取储存在该硬盘上的档案。总之,救援模式就是从其他介质启动(能够自己选择挂载的分区),从而获得一个runlevel(如果按照流程,会进入level1的单用户模式)。
紧急模式:
在紧急模式中,您是开机进入尽可能最小的环境中。根目录档案系统将会被挂载为仅能读取,而且将不会做任何的设定。比起单机使用者模式,紧急模式最主要的优点是并不载入 init 档案。因此当 init 档案毁损或无法使用时,您仍然可以挂载档案系统以回复重新安装阶段中遗失的资料。
注:现在的centos7取消了使用多年的 SystemV 的服务管理方式,也就是说,从这一版开始,已经没有所谓的“执行等级 (run level) ”的概念了。新的管理方法使用的是 systemd 的模式(systemctl而非init),这个模式将很多的服务进行相依性管理。
-----------------------------------------------------------------
回到更改密码的问题上来,显然,如果用rescue mode获取环境,需要使用mount和chroot挂载根目录并更换当前根目录后然后使用passwd命令更改密码。如果能直接用单用户模式的环境,则可以直接更改密码。至于紧急模式,不推荐使用(网上有人说的,不清楚),因为很多基础服务未加载,强制重启后可能会有问题。
所以说,下次有人问忘记了root密码该怎么办,最准确的回答是“找一个能获得root权限shell的mode并将根目录切换到磁盘的根目录下执行passwd命令并注意SElinux上下文的保存”(好吧这有点绕。。),最正确/简单是回答是“单用户模式”。
参考:
Runlevel --> https://en.wikipedia.org/wiki/Runlevel
Linux Standard Base --> https://en.wikipedia.org/wiki/Linux_Standard_Base
Basic System Recovery --> https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ap-rescuemode.html#s1-rescuemode-booting-single
救援模式(Rescue Mode)、单用户模式(Single-User Mode)、紧急模式(Emergency Mode)的区别与联系的更多相关文章
- centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课
centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /d ...
- Linux系统救援模式应用:单用户模式找回密码
利用Linux系统救援模式找回密码 方法一: 开机时手要快按任意键,因为默认时间5s grub菜单,只有一个内核,没什么好上下选的,按e键.升级了系统或安装了Xen虚拟化后,就会有多个显示. 接下来显 ...
- CentOS 7 单用户模式+救援模式
CentOS 7 单用户模式+救援模式 CentOS 7 单用户模式+救援模式.有时候大家可能会忘记自己的root密码,或者错误(命令输入错误,命令位置输入有误等)编辑了一个/etc目录下的核心文件导 ...
- linux单用户模式
linux单用户模式 2014年11月11日 17:18 在grub上相应要启动的内核上按“e”. 进入下一界面,继续按“e”. 在进入文本界面后,输入“single”回车. 进入grub界面后,按“ ...
- centos单用户模式修改ROOT密码
首先启动的时候的时候,需要进入单用户模式(进入单用户模式的前提是系统引导器能正常工作),单用户模式是不需要输入密码,并且(进入单用户模式,没有开启网络服务,不支持远程连接 )网上说可以通过GRUB ( ...
- centos6.5单用户模式拯救系统
系统出现启动异常,某个软件卡住了不能启动(按Fx键可以查看是哪个软件卡住了),需要进入单用户模式或修复模式对系统进行管理. 使用单用户模式有一个前提,只要系统引导器(grub)能正常工作,否则要进行系 ...
- lesson - 2 yum /单用户/救援模式/Linux 启动
课程大纲:1. yum使用yum 是一个在线安装软件包的工具,它可以帮我们解决软件包的依赖,这个日后会详细介绍.我们介绍了以下几个用法:yum list 这个命令可以列出所有安装过和未安装的软 ...
- Linux系统CentOS进入单用户模式和救援模式详解
一.概述 目前在运维日常工作中,经常会遇到服务器异常断电.忘记root密码.系统引导文件损坏无法进入系统等等操作系统层面的问题,给运维带来诸多不便,现将上述现象的解决方法和大家分享一下,本次主要以Ce ...
- 单用户模式&救援模式&克隆虚拟机&Linux机器相互登录
1.13 单用户模式 1.14 救援模式 1.15 克隆虚拟机 1.16 Linux机器相互登录 1.单用户模式 关机:init 0 .poweroff 重启:init 6 .reboot 关机:in ...
随机推荐
- C#数据类型和SQL数据类型对照
C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致 /// <summary> /// 数据库中与C#中的数 ...
- VIM于换行EOL的思考
\n LF 0A 将当前光标切换到下一行(不一定行首)\r CR OD 将当前光标置于行首 在windows与unix系统中,unix将\n代表换行并置于行首,而windows保持原意.即unix:\ ...
- Linux系列教程(二十)——Linux的shell概述以及如何执行脚本
从这篇博客开始,我们将进入Linux的shell脚本的学习,这对于Linux学习爱好者而言是特别重要的一节,也是特别有意思的一节,shell 脚本就像我们知道的Java,php类似的编程语言一样,通过 ...
- CSharpGL(47)你好,Framebuffer!
CSharpGL(47)你好,Framebuffer! Framebuffer对象(FBO)是一种复杂的OpenGL对象.使用自定义的framebuffer,可以实现离屏渲染,进而实现很多高级功能,例 ...
- Liunx find的运用
find命令 一.根据 -name 查找 find[搜索范围][搜索条件] find /root -name a1 若是模糊查询,则使用通配符 *匹配任意字符{find /root -name &qu ...
- jq获取浏览器的高度
// console.log("2-"+$(window).height()); //浏览器当前窗口可视区域高度 // console.log("3-"+$(d ...
- ConstraintLayout
ConstraintLayout使用笔记 具体使用参考:http://blog.csdn.net/guolin_blog/article/details/53122387 ConstraintLayo ...
- Gulp livereload
平时使用yeoman作为前端部署工具,感觉到yeoman构建工具虽然方便,但是速度和大小总是不尽人意. 最近看到了gulp http://gulpjs.com/ 比较感兴趣随动手一试 gulp的安装以 ...
- Sublime text3 代码格式化插件
使用 Sublime text 3 格式化HTML代码,需要安装插件,具体安装步骤如下: 1. 打开菜单 -> 首选项(Perferences) -> 插件控制(Packpage Cont ...
- String、StringBuilder和StringBuffer
1.string不可变性 java的docs有这样一句话:Strings are constant; their values cannot be changed after they are cre ...