首页 89游戏资讯 正文

Linux单用户模式修改root密码:这几步轻松搞定!

哥们姐们儿,今天跟大伙儿分享个我之前碰到的事儿,关于咱们那台Linux服务器的root密码给忘了,当时可把我急坏了。那阵子刚接手一台老服务器,之前是同事在弄,结果他一辞职,我上手一跑,发现好多东西不清楚,特别是这root密码,他愣是没给我留下来。我就蒙圈了。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu

第一次碰壁:常规操作不行

刚开始我寻思着,不是有个sudo命令嘛要是某个用户有sudo权限,能不能用sudo来改root密码?我尝试着找了半天,发现这台服务器上,除了root用户,其他普通用户都权限特别小,压根就不能用sudo。我就知道,这条路是堵死了。那怎么办?总不能重装系统,里面数据一大堆,重装不得累死。

峰回路转:想起单用户模式

后来我猛地想起来,大学那会儿老师好像提过一嘴,Linux系统有个单用户模式,就是为了紧急情况用的,比如改密码。当时没往心里去,这回算是实打实地遇到了。赶紧回忆了一下,又上网随便搜了搜,把步骤大概捋了一遍。

  • 得把服务器重启。
  • 重启的时候,得抓住机会,让它进到启动菜单(GRUB菜单)里。
  • 进去以后,要改改启动参数,让系统以单用户模式启动。
  • 然后,进去之后就可以改密码了。
  • 改完密码,还得做点清理工作,再正常启动。

心里有了个谱,就开始动手了。

我的实际操作过程

我那台机器是CentOS的,操作起来跟常见的发行版大同小异。

第一步:重启服务器,进入GRUB菜单。

我直接在物理机上按下重启按钮,显示器开始跑字儿的时候,我就不停地按“e”键。别问我为啥是“e”,反正就是它!手速一定要快,不然它刷一下就进系统了,你就得再来一遍。按了几下,屏幕果然停住了,出现了一个编辑启动项的界面,上面密密麻麻的都是英文和参数,看着就头大。

第二步:修改启动参数。

我仔细找找,找到了以`linux16`开头的那一行,这行就是告诉内核怎么启动的。我把光标挪到这行的面,然后敲了个空格,跟着输入了`*`。这个参数特别关键,它能让系统在启动到一半的时候“中断”,停留在ramdisk的shell环境里,这时候还没真正挂载根文件系统。

第三步:启动修改后的系统。

参数输完了,我就按下F10键(有的可能是Ctrl+X,看屏幕底部的提示),系统就开始启动了。这回启动有点不一样,它跑了一会儿,停在了一个黑乎乎的命令行界面,提示符是`switch_root:/#`。看到这个,我就知道成功了一半。

第四步:重新挂载根文件系统。

这时候的根文件系统是只读的,肯定不能改东西。我得把它改成读写模式。我就敲了命令:`mount -o remount,rw /sysroot`。这个`/sysroot`就是我们平时看到的`/`,只不过在`*`模式下,它被挂载到了`/sysroot`。命令一敲,回车,没报错,心里石头落地了一半。

第五步:切换根环境。

改完挂载模式,我还需要把当前的环境切换到真正的根文件系统里,这样才能正常操作。我又敲了个命令:`chroot /sysroot`。回车后,提示符变成了`sh-4.2#`之类的,这就说明我成功“钻”进了系统里。

第六步:修改root密码。

终于到了最关键的一步!我毫不犹豫地敲下`passwd root`。系统提示我输入新密码,我小心翼翼地敲了两遍新密码。屏幕上显示“`all authentication tokens updated successfully`”,这下是真的成了!

第七步:处理SELinux标签。

密码是改了,但还没完。我的这台CentOS服务器开了SELinux,要是直接重启,系统会因为SELinux安全上下文不对,导致启动失败。我可不想再折腾一遍。所以我又敲了个命令:`touch /.autorelabel`。这个命令会在根目录下创建一个空文件,系统启动的时候检测到这个文件,就会自动重新标记SELinux上下文,虽然会慢一点,但保险。

第八步:退出并重启。

所有工作都做完了,我先`exit`退出`chroot`环境,然后再`exit`一次,系统就开始自动重启了。我紧张地盯着屏幕,看着它一路跑跑,终于,登录界面出来了!我赶紧用新密码去登录root用户,一次成功!

那一下午,我的心情就像坐过山车,从焦虑到惊喜,是满满的成就感。这经历也告诉我,有时候看似很复杂的问题,只要你知道一些底层的原理和操作,也能轻松解决。记录下来,也算是给自己以后留个底,也分享给可能遇到同样麻烦的朋友们。