本文以重置root用户密码为例,讲解一下Linux运维工作中解决一般问题的过程和结果。重置root密码这种问题的结果很简单,重点是解决过程,供新手参考和借鉴,希望通过此文作为新手能知道日常运维中解决一个问题的过程是怎样的,以及从解决问题的过程中应该学到什么。

人的思维总是会固化的,除非他自己深刻地认识到的确需要转变。IT领域中的知识总是在不断变化更新的,需要我们不停地去“增删改查”自己的小知识库。先前以为达到某一个目的可以这样做一件事情,可能一小段时间后就需要那样做一件事情。

事情经过:

昨天一大学同学(本身可以说是Linux方面的小白)QQ上问我说,自己的Linux虚拟机使用正确的用户名和密码无法登录到系统,提示用户名和密码不正确。

解决一般问题的思路:

作为一个去为他人解决问题的人,其思维轨迹应该是这样的:

1.告诉她不要慌,问题总是能解决的,况且这是一个很简单很常见的问题

2.如果她动手能力比较强,那么把解决问题的思路告诉她,询问她有没有做过什么特别的操作,帮她找到问题存在的原因防止类似问题再次发生

3.如果她动手能力和解决问题的能力较差,那么可以远程帮她或者直接告诉她有哪些简单的方法可以自己看后就能使用,快速解决问题

4.如果不能远程或者必须一步一步教告诉她如何做,那么就需要知道足够多的信息,不管是解决问题的方法还是去了解她那边的情况:

(Remember:你可能是在为傻子解决问题)

1)了解情况:问题是什么,需求是什么,问题的背景如何,了解此问题的严重性(紧急重要)?

2)收集信息:当前运行状况如何,明确是一个怎样的情况,什么系统,运行环境是怎样的?

3)继续询问和分析:问题是什么时候发生的,如何发生的,做过那些操作?

4)解决过程:该如何帮助其解决?步骤1,2,3……备份、责任、认真、心怀敬畏、平常心……

4)遭遇和预测异常:如果解决不了,该如何去做?寻找Plan B,预测最糟糕的结果

4)总结分享:告知以后该怎么做,如何预防类似问题

解决此问题的思路:

按照惯有的知识,通常忘记root密码是一件非常简单的事情,比如1.最简单的方法是:进入单用户模式,直接修改(了解其中的条件限制,balabala);2.复杂有效的方法:没有安全的系统,使用livecd、livedvd等iso镜像或者安装光盘(注意版本和位数,否则易遭遇segmentation fault)中rescue模式(救援模式使用起来要比livecd方便),chroot后执行passwd命令或者直接修改/etc/shadow文件,云云。

注:救援模式(Rescue Model)存在于DVD和Minimal版本中,所以通常使用Minimal iso即可,不必非得用下载DVD的iso。

但是如文首所提到的,往往知识是需要更新,思维是需要改变的。就第一种最简单有效的方法来说,RHEL6、7跟以前大不相同,单用户模式下也会要求给出root用户的密码,因此想快速修改密码必须另辟蹊径。

快速解决类似问题的捷径通常是这样的:

1.快速确定关键词,用Google或者百度(如果你喜欢和信任)搜索关键词,筛选和快速浏览解决问题的文章(要求关键词提炼能力和快速筛选有用信息的能力,这需要积累和经验),凭借自己的经验和感觉去有选择的试验

其他需要的附加技能:英语、……

好的关键词举例:

1)Google:resetting root password site:redhat.com 或 rhel resetting root password  或 rhel6 forgot the root password.

2)百度:RHEL6 重置root密码 或 RHEL6忘记root密码

2.如果不幸运,搜索引擎没有任何帮助,那么官方网站(特别是官方文档、手册等)可能是一种快速解决问题的办法

重置root用户密码是Linux日常管理使用中的一件很常见的管理性任务,因此官方文档是解决问题最快的地方。虽然查找官方文档需要对官方文档的编排和分类比较熟悉,但能保证文档的权威性。

有时通过某种方法行不通时,可能有别的原因,需要再排查排查,不要轻易放弃,多试几次或者换个思路就会成功。某种原因可能在Bug和Wiki页面上指出,比如RHEL/CentOS6.8以前SELinux的某个bug会导致root密码无法重置。

几个建议:

1.建议除非特殊需要,支持64位的硬件应当选择安装64位的Linux。

2.及时安装更新,

3.安装和使用Linux时遵循标准,不要太个性化

4.不要将所有鸡蛋放在一个篮子里,经常备份关键数据

5.使用虚拟化和Docker技术

重置root密码方法:

第一种方法适用于7,第二种方法适用于6

一,以RHEL 7(7.3)为例,列举一个典型的方法:

1.打开系统电源,在GRUB2启动界面出现时按下e编辑,删除linux6或linuxefi对应行上的rhgb和quiet,在后面添加 init=/bin/sh,按下Ctrl+x,启动Linux

Red Hat Enterprise Linux 7 64-2017-03-03-10-11-23

 Red Hat Enterprise Linux 7 64-2017-03-03-10-11-46

2.如果想使用SELinux,则执行/usr/sbin/load_policy -i命令,执行mount -o remount, rw / 后可以执行passwd命令修改root密码,最后执行exec /sbin/init即可

 Red Hat Enterprise Linux 7 64-2017-03-03-10-15-37

Red Hat Enterprise Linux 7 64-2017-03-03-10-15-56

二,以救援模式为例,在CentOS6中重置root密码方法如下:

注:不必使用6.7的iso重置6.7系统中的root密码,完全可以使用6.8的iso重置6.7的系统。

使用键盘上的上下箭头选择第3个“Rescue installed system”

centos6_Docker-2017-03-03-15-20-35

网络可以选择不开启,取决于要做什么

centos6_Docker-2017-03-03-15-25-32 

centos6_Docker-2017-03-03-15-25-43

centos6_Docker-2017-03-03-15-25-52

下图中选择继续“Continue”,也可以使用“Advanced”加载SAN

centos6_Docker-2017-03-03-15-26-20

centos6_Docker-2017-03-03-15-26-28

centos6_Docker-2017-03-03-15-26-31 

centos6_Docker-2017-03-03-15-26-35

执行如下命令:

1.chroot /mnt/sysimage

2.passwd

3.exit或者Ctrl+D 退出 chroot

4.exit或者Ctrl+D 退出 维护shell

centos6_Docker-2017-03-03-15-27-12

重启系统

centos6_Docker-2017-03-03-15-27-25 

其他的办法也有,就不在此一一列举了,可以阅读下面的连接查阅官方文档。

可参考文档:

  1. Red Hat, RHEL6:Basic System Recovery

  2. Red Hat, RHEL7:Changing and Resetting the Root Password

  3. CentOS, General:Resetting a Forgotten Root Password

tag:忘记root密码,重置root密码,解决问题

--end--