从一次生产事故说起——linux的单用户模式,救援模式等等
伴随着今年linux上面最大一个安全漏洞bash漏洞的出现,我们公司也開始了风风火火的漏洞修复工作,机器一多,也就easy出问题,有台64位的linuxserver一不小心就升级了32位 bash 的rpm,因为root,oracle这些用户默认都是通过/bin/bash来登陆的。这就造成了用户不能登陆server造成了极大的困扰,以下就是应对的办法,因为在生产环境解决的时候没法截图,通过虚拟机的环境来模拟当时的情况:
我们通过删除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
重新启动server
就发现系统就卡在这儿。一直无法进入登陆界面
通常的,linux系统一出问题,我们就想到了linux的救援模式,好,如今就进入救援模式看看能不能解决这种问题
一步一步我们都选择默认的
看到这儿。非常多人肯定非常高兴,如今直接安装bash的rpm 包,这个问题不就能轻松攻克了嘛
事实上。如今bash仅仅是有光盘的提供的一个虚拟的linux系统,此刻我们如今还没有真正的进入我们的server的系统中,依照上面的 提示输入:
chroot /mnt/sysimage
能够看到报了例如以下的错误,应为sh仅仅是bash的软连接。如今bash已经没了,sh自然就无法进行连接第一次尝试失败了
linux事实上另一种其它的登陆方式,叫做跨越控制台的登陆方式:
跨越控制台登录是不须要输入rootpassword的,假设您把rootpassword丢失,就要想到跨越控制台登录。我们前面所说的救援模式从本质上来说,就是跨越控制台登录。由于无须要password验证就能登录系统;
跨越控制台登录主要包含:借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 来查看文件系统的载入情况。既然都把文件系统挂载了,有什么活干不了的呢?重设rootpassword。备份文件... ...
能够看到我们已经把光盘挂载到/media以下了,就能够直接安装bash的rpm镜像来进行修复了
重新启动server,发现远程能够顺利的连上server了。问题解决!!
从一次生产事故说起——linux的单用户模式,救援模式等等的更多相关文章
- Linux学习总结(四)-两种模式修复系统,单用户,救援模式
一单用户模式 我们举例,比如忘记root 用户密码我们就可以进入单用户模式重置,该单用户模式,类似windos 安全模式开机界面快速按e 进入grub光标定位到 linux16 下一行ro crash ...
- Linux进入单用户模式
有时候配置linux的过程中,因为一些误操作导致系统初始化时堵塞或挂起而无法进入系统,原因往往是因为配置文件设置错误,部分文件被误删之类.遇到这种情况一般新手的做法就是重装(虚拟机不装白不装),但在实 ...
- linux的单用户模式
玩儿过linux的朋友,估计都有过遗忘超级用户密码或者把/etc/inittab./etc/rc.d/rc.sysinit之类文件误编辑,导致系统无法正常启动的恼人经历, 此类问题都可以通过单用户模式 ...
- 单用户模式&救援模式&克隆虚拟机&Linux机器相互登录
1.13 单用户模式 1.14 救援模式 1.15 克隆虚拟机 1.16 Linux机器相互登录 1.单用户模式 关机:init 0 .poweroff 重启:init 6 .reboot 关机:in ...
- linux进入单用户方法-乾颐堂
RedHat7.2 在使用GRUB引导程序的时候如何进入单用户 1.在出现GURB引导画面时,按字母e,进入GRUB编辑状态 2在引导菜单后添加“1”或single,选定它,然后按字母b,就可引导到单 ...
- Linux进入单用户模式的两种方法
单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...
- linux重启后进入了救援模式,无法远程登录
卸载删除了某个文件系统分区的逻辑卷,但是没有修改fstab文件,导致系统重启异常,此时已经无法远程连接了,只能本地登录到救援模式修改
- Linux进入单用户模式(passwd root修改密码)
进入单用户模式——passwd root修改密码 1.在grub 页面输入a,进入修改内核模式 2.在内核的结尾“/”,输入空格,在输入single,回车 3.启动系统,进入单用户模式 4.Passw ...
- Linux系统的用户和用户组管理
一.用户账户管理 Linux/Unix是一个用户.多任务的操作系统:在讲Linux账号及账户组管理之前,先简单了解一下多用户.多任务操作系统的基本概念. Linux的单用户多任务 在Linux下,当你 ...
随机推荐
- centos7下部署FastDFS分布式文件系统
前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS ...
- 【codeforces 734F】Anton and School
[题目链接]:http://codeforces.com/problemset/problem/734/F [题意] 给你两个数组b和c; 然后让你找出一个非负数组a满足题中所给关系; [题解] 有个 ...
- 【codeforces 810C】Do you want a date?
[题目链接]:http://codeforces.com/contest/810/problem/C [题意] 给你一个集合,它包含a[1],a[2]..a[n]这n个整数 让你求出这个集合的所有子集 ...
- 洛谷 P2652 同花顺
P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...
- 简单来说一下java中的泛型,ssh中dao层使用会简化代码量
原来仅仅是听老师说泛型特别好用,但是后来一直弄android用的泛型就比較少了.但是感觉它真的非常重要,于是花了一下午的时间写了个demo.好,老规矩.上代码: 首先,sysout是个工具,可是用着不 ...
- 打印全排列和stl::next_permutation
打印全排列是个有点挑战的编程问题.STL提供了stl::next_permutation完美的攻克了这个问题. 可是,假设不看stl::next_permutation,尝试自己解决,怎么做? 非常自 ...
- elasticsearch如何安全重启
elasticsearch如何安全重启节点 问题: elasticsearch集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级.但是业务不能停,如果直接kill掉节 点, ...
- POJ 3368 线段树
思路: 先统计在第i个位置当前数字已经出现的次数. 维护两个数组,一个是当前位置的数字最后一次出现的位置,另一个是当前位置的数字第一次出现的位置 查找的时候分为两种情况: 没有和边界相交(意会意会)的 ...
- Kettle的设计
不多说,直接上干货! 大家都知道,这2001年以来,一直在同各种ETL工具做斗争,所以Matt 确定了Kettle的一个主要设计目标是尽可能开放.主要就是指: 开发,可读的元数据格式(XML). 开放 ...
- C#~异步编程再续~你必须要知道的ThreadPool里的throw
问题依旧存在 之前写过相关文章异步编程的文章,本文主要还是一点补充,之前在IIS经常发w3wp进程无做挂了的情况,但一直没能找到真正的原因,而查找相关资料,找了一些相关的文章,如await和async ...