从一次生产事故说起——linux的单用户模式,救援模式等等

伴随着今年linux上面最大一个安全漏洞bash漏洞的出现,我们公司也开始了风风火火的漏洞修复工作,机器一多,也就容易出问题,有台64位的linux服务器一不小心就升级了32位 bash 的rpm,由于root,oracle这些用户默认都是通过/bin/bash来登陆的,这就造成了用户不能登陆服务器造成了极大的困扰,下面就是应对的办法,由于在生产环境解决的时候没法截图,通过虚拟机的环境来模拟当时的情况:

我们通过删除bash的rpm包的方式来模拟生产商bash包装错的情况:

在这个以前,我们先来看看linux几个常用的shell之间的关系

[09:18:56 root()@kiwi ~]# ll /bin/sh
lrwxrwxrwx. 1 root root 4 Sep 15 07:59 /bin/sh -> bash
[09:19:02 root()@kiwi ~]# ll /bin/ksh
-rwxr-xr-x. 1 root root 168016 Jul 21  1999 /bin/ksh
[09:19:09 root()@kiwi ~]# ll /bin/csh
lrwxrwxrwx. 1 root root 4 Sep 15 08:03 /bin/csh -> tcsh
[09:19:21 root()@kiwi ~]# ll /bin/tcsh
-rwxr-xr-x. 1 root root 387328 Dec 18  2012 /bin/tcsh

可以看到,现在sh只是bash的软连接,如果bash损坏了,sh也就损坏了,也就无法登陆系统了

现在进行模拟

[09:19:29 root()@kiwi ~]# rpm -qa bash
bash-4.1.2-15.el6_4.x86_64
[09:21:46 root()@kiwi ~]# rpm -e bash --nodeps
warning: %postun(bash-4.1.2-15.el6_4.x86_64) scriptlet failed, exit status 127
[09:22:05 root()@kiwi ~]# rpm -qa bash
[09:22:13 root()@kiwi ~]#

现在已经把bash的rpm给强制删除掉了,看到各个用户的登陆方式

[09:22:13 root()@kiwi ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
oracle:x:500:500::/home/oracle:/bin/bash

重启服务器

就发现系统就卡在这儿,一直无法进入登陆界面

通常的,linux系统一出问题,我们就想到了linux的救援模式,好,现在就进入救援模式看看能不能解决这样的问题

一步一步我们都选择默认的

看到这儿,很多人肯定很高兴,现在直接安装bash的rpm 包,这个问题不就能轻松解决了嘛

其实,现在bash只是有光盘的提供的一个虚拟的linux系统,此刻我们现在还没有真正的进入我们的服务器的系统中,按照上面的 提示输入:

chroot /mnt/sysimage

可以看到报了如下的错误,应为sh只是bash的软连接,现在bash已经没了,sh自然就无法进行连接第一次尝试失败了

linux其实还有一种其他的登陆方式,叫做跨越控制台的登陆方式:

跨越控制台登录是不需要输入root密码的,如果您把root密码丢失,就要想到跨越控制台登录;我们前面所说的救援模式从本质上来说,就是跨越控制台登录,因为无需要密码验证就能登录系统;

跨越控制台登录主要包括:借grub和lilo 跨越控制台登录; linux rescue 模式;第三方livecd 系统和第三方Linux系统;

1)如果您用的是grub进行系统引导;

在grub 启动后,移动键盘到Linux的启动项;

按e键;

继续按e

然后再移动键盘到类似下面的一行,也就是kernel的那行:

kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet

把光标移动这行后,再按一下e键,进入编辑这行;在行尾条一个空格 ,然后输入如下的:

kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet linux init=/bin/ksh

结束编辑,按回车返回;

接着我们要启动系统,按一下b键启动;

这样我们就可以通过另外一种shell来启动linux系统

可能系统是只读的;

要运行下面的命令;

#mount -o remount,rw /

然后我们可以通过 df -h 来查看文件系统的加载情况;既然都把文件系统挂载了,有什么活干不了的呢?重设root密码,备份文件... ...

可以看到我们已经把光盘挂载到/media下面了,就可以直接安装bash的rpm镜像来进行修复了

重启服务器,发现远程可以顺利的连上服务器了,问题解决!!

时间: 2024-12-25 23:22:21

从一次生产事故说起——linux的单用户模式,救援模式等等的相关文章

跟阿铭学linux之四单用户、救援模式、克隆、服务器之间相互登陆

一.单用户模式使用场景:忘记密码,但又不能重装系统,这里就用到单用户模式.操作步骤:1,重新启动电脑,进入到如下界面2,按e进入下个界面3,把这页面往下拉,修改并添加如下语句rw init=/sysroot/bin/sh4,修改成如上图,按CTRL+X继续运行5,进入到如下界面:6,输入chroot /sysroot/7,passwd root 更改root密码8,重启后,就可以用新密码进行登陆了二.救援模式此模式为光盘引导模式,通过光盘引导,进入救援模式,更改ROOT密码三.克隆虚拟机此步骤为

第四课 单用户、救援模式及linux机器相互登陆,虚拟机的克隆

一.重启命令 1.在linux系统里重启的命令有:reboot.init 6 .shutdown -r now ;关机命令:init 0 ,powweroff 二.单用户模式(在忘记root密码后重置密码.(前提:能直接接触到主机,并且没有设置开机密码的情况下) 1.系统重新后,在开机启动画面选择第一行:CenOS Linux,with linux 3.10.0-123.17e.x86_64,看下面提示说明! 2.按e进入grub(找到系统的启动盘)界面,按方向键找到linux16开头一行,按方

linux运行级别&单用户模式&救援模式

运行级别 init 6 == reboot == shutdwon -r now 重启 init 0 == shutdown -h now 关机 单用户模式 启动后三秒内按任意键--->按e编辑-->按方向键选第2项再按e键-->在最尾部按1-->再按b启动-->过几秒钟进入单用户模式-->用password更改密码并重新启动 救援模式 光盘启动镜像-->选择第三项rescue installed system-->提示是否选择网络-->是否将原系统挂

Linux的单用户模式

首先,来看一下单用户模式的概念:http://baike.baidu.com/link?url=HCY6FmjdXMtvNLIh9A9L2HC5ndHPZS0OnAfqwMZC0E5IUY5ONKfD5vhaUkZWhQ3BGI9bYPWWVUNv_Qu-YXxRBK 其次,单用户最突出且实用的一个好处就是:可以无密码登录,所以,在忘记密码时,可以进入单用户模式修改登录密码. 最后,来看一下,如何进入linux的单用户模式: 1.系统启动时,按键盘上的“e",直到进入下面这个页面: 2.选择ke

如何进入Linux的单用户模式

首先,来看一下单用户模式的概念:http://baike.baidu.com/link?url=HCY6FmjdXMtvNLIh9A9L2HC5ndHPZS0OnAfqwMZC0E5IUY5ONKfD5vhaUkZWhQ3BGI9bYPWWVUNv_Qu-YXxRBK 其次,单用户最突出且实用的一个好处就是:可以无密码登录,所以,在忘记密码时,可以进入单用户模式修改登录密码. 最后,来看一下,如何进入linux的单用户模式: 1.系统启动时,按键盘上的"e",直到进入下面这个页面: 2

Linux的单用户模式和重置linux root密码

linux中,单用户最突出且实用的一个好处就是:可以无密码登录,所以,在忘记密码时,可以进入单用户模式修改登录密码. 那么如何进入linux的单用户模式: 1.系统启动时,按键盘上的"e"键,直到进入下面这个页面:2.选择以kernel /vmliuz-*****开头的项(即第二项),按下键盘"e"键,进入编辑界面.3.在行尾输入:空格single,如下图.然后回车确定,会自动返回第二步的界面.4.按键盘的"b",重新引导系统 5.然后你就进入了

Linux进入单用户模式加密

Linux进入单用户模式加密 文本关键字:Linux.单用户模式加密.grub菜单加密.明文加密.MD5加密在默认情况下,系统会在3(完整的多用户模式)和5(带界面的操作模式)两个级别下运行.在之前的文章中已经和大家介绍了如何将系统切换至单用户模式下运行,在单用户模式下,直接就可以操作root用户来重置密码.那么问题就来了,既然任何一个不知道root密码人都可以通过这种方式来重置密码,那我们的系统也就危险了.为了避免这个问题,我们需要在进入单用户模式时加一些限制,也就是多加一层密码验证. 一.明

Linux使用单用户模式修改root密码.

Linux使用过程中,和Windows一样,时间一长后,就会忘记设置的超级用户密码.我们知道在Windows下超级用户是Administrator,而在Linux下超级用户是root.那么,下面我们就开始讲解在Linux忘记root密码时,应该如何设置新的root密码(以CentOS 6.8为例). 1.重启你的Linux操作系统,在3秒内按下Enter键或者↓键.此时可以看见如下界面: 说明:         'e'表示在启动系统前,在命令行编辑.         'a'表示在启动系统前,可以

单用户模式 救援模式 克隆虚拟机 linux机器互相登录

一.单用户模式忘记root密码:方法一:使用单用户模式linux重启命令:reboot.init 6.shutdown -r nowlinux关机命令:init 0.poweroff虚拟机开机重启按方向键上下键进行选择,选择第一个,按e键进入如下界面,按向下方向键找到下图标记处修改ro为rw并添加字符串: init=/sysroot/bin/sh(注释:ro表示只读,rw表示读写),添加完这些,按Ctrl+x切换系统:chroot /sysroot/,这样就登录上原来使用的操作系统了,然后修改密