Linux | 单用户模式启动 / root 暗码重置 / 修复

打印 上一主题 下一主题

主题 1748|帖子 1748|积分 5244

注:本文为 “Linux 启动单用户模式” 相干文章合辑。
略作重排,未去重。

以单用户模式启动 Linux 的三种方法

作者: Magesh Maruthamuthu
译者: LCTT Xiaobin.Liu
2020-05-03 23:01

单用户模式,也被称为维护模式,在此模式下超级用户能够规复或修复系统问题。
通常情况下,此类问题在多用户情况中无法修复,比方系统能够启动但功能无法正常运行,或者无法登录系统。
在基于 Red Hat(RHEL)7/8 的系统中,可使用 runlevel1.target 或 rescue.target 来实现单用户模式。
在此模式下,系统会挂载所有的当地文件系统,但不会开启网络接口。
系统仅启动特定的几个服务以及修复系统所必须的尽大概少的功能。
当必要运行文件系统同等性查抄以修复损坏的文件系统,或忘记 root 暗码后重置暗码,又或要修复系统上的一个挂载点问题时,此方法非常有用。
可以使用以下三种方法以单用户模式启动 CentOS/RHEL 7/8 系统:


  • 方法 1:通过向内核添加 rd.break 参数来以单用户模式启动 CentOS/RHEL 7/8 系统;
  • 方法 2:通过用 init=/bin/bash 或 init=/bin/sh 替换内核中的 rhgb quiet 语句来以单用户模式启动 CentOS/RHEL 7/8 系统;
  • 方法 3:通过用 rw init=/sysroot/bin/sh 参数替换内核中的 ro 语句以单用户模式启动 CentOS/RHEL 7/8 系统。
方法 1

通过向内核添加 rd.break 参数来以单用户模式启动 CentOS/RHEL 7/8 系统。
重启系统,在 GRUB2 启动界面,按下 e 键来编辑选中的内核。需选中第一行,此中第一个是最新的内核,若盼望使用旧的内核启动系统,也可选择其他行。

根据 RHEL/CentOS 版本,找到 linux16 或 linux 语句,按下键盘上的 End 键,跳至行末,按照如下截图所示添加关键词 rd.break,按下 Ctrl+x 或 F10 以进入单用户模式。
若系统是 RHEL/CentOS 7,需查找 linux16;若系统是 RHEL/CentOS 8,则需查找 linux。

此修改会使 root 文件系统以 “只读(ro)” 模式挂载。可使用以下下令进行验证,以下输出也明确表明当前处于 “紧急模式(Emergency Mode)”。
  1. # mount | grep root
复制代码

为了修改 sysroot 文件系统,必要以读写模式(rw)重新挂载它。
  1. # mount -o remount,rw /
  2. sysroot
复制代码
运行以下下令修改情况,这即通常所说的 “监禁目次” 或 “chroot 监狱”。
  1. # chroot /sysroot
复制代码

此时,单用户模式已完全预备就绪。当修复完问题并要退出单用户模式时,执行以下步骤。
CentOS/RHEL 7/8 默认使用 SELinux,因此需创建以下隐藏文件,该文件会在下一次启动时重新标志所有文件。
  1. # touch /.autorelabel
复制代码
最后,使用以下下令重启系统,也可输入两次 exit 下令来重启系统。
  1. # reboot -f
复制代码
方法 2

通过用 init=/bin/bash 或 init=/bin/sh 替换内核中的 rhgb quiet 语句来以单用户模式启动 CentOS/RHEL 7/8 系统。
重启系统,在 GRUB2 启动界面,按下 e 键来编辑选中的内核。

找到语句 rhgb quiet,用 init=/bin/bash 或 init=/bin/sh 替换它,然后按下 Ctrl+x 或 F10 以进入单用户模式。
init=/bin/bash 的截图。

init=/bin/sh 的截图。

默认情况下,上述操作会以只读(ro)模式挂载 / 分区,因此必要以读写(rw)模式重新挂载 / 文件系统,以便能够对其进行修改。
  1. # mount -o remount,rw /
复制代码

此时即可执行相干任务。当任务结束时,执行以下下令来开启重启时的 SELinux 重新标志。
  1. # touch /.autorelabel
复制代码
最后,重启系统。
  1. # exec /sbin/init
  2. 6
复制代码
方法 3

通过用 rw init=/sysroot/bin/sh 参数替换内核中的 ro 单词,以单用户模式启动 CentOS/RHEL 7/8 系统。
为了中断自动启动的过程,重启系统并在 GRUB2 启动界面按下任意键。
此时会展示系统上所有可用的内核,选择最新的内核,按下 e 键来编辑选中的内核参数。
找到以 linux 或 linux16 开头的语句,用 rw init=/sysroot/bin/sh 替换 ro。替换完成后按下 Ctrl+x 或 F10 以进入单用户模式。
运行以下下令把情况切换为 “chroot 监狱”。
  1. # chroot /sysroot
复制代码
如有必要,进行须要的修改。修改完成后,执行以下下令来开启重启时的 SELinux 重新标志。
  1. # touch /.autorelabel
复制代码
最后,重启系统。
  1. # reboot -f
复制代码

增篇:大同中的小异


解决 CentOS 7 修改 root 暗码报错以及无法进入单用户模式

莫闲 219 于 2022 - 03 - 23 14:00:38 发布
Linux 找回 root 暗码操作如下:

  • 启动系统,在开机界面按 “e” 进入编辑界面。
  • 找到以 “Linux16” 开头的内容,在行的最后输入:init=/bin/sh。
  • 之后按 ctrl + x 进入单用户模式。
  • 接着输入 mount -o remount,rw /。
  • 在新的一行输入 passwd,按回车后输入暗码,并确认输入暗码。如果显示 passwd... 的样式,则表示修改乐成。
  • 接着输入:touch /.autorelabel
    ,然后回车。
  • 之后输入 exec /sbin/init
    ,等待一段时间,系统自动重启,新暗码生成。
必要注意的是,如果出现 “SMBus Host Controller not enabled!” 之后,不要进行任何操作,等待半晌。等系统完成修改后,此时无法对编辑界面进行操作,重启假造机即可。如果中途退出假造机,会导致 root 的新老暗码都无法登录,且无法在开机界面进入单用户模式,如图所示:

此时,必要在 linux16 中的 rd.lvm.lv 前参加 rw,并在行末端输入 init=/bin/sh,即可进入单用户模式。


Red Hat & CentOS 救援模式 / 单用户模式

阿巴阿巴 编辑于 2021-09-16 13:10
情况

Red Hat 8 同时兼容 CentOS 8。单用户模式和救援模式主要用于系统出现错误设置不能正常启动的情况,可使用这两种模式来更改错误设置。当忘记 root 暗码时,也可通过这两种方式逼迫更改暗码。
单用户模式

在此模式下,与正常启动的系统差别不大,以 root 身份运行,拥有最高权限,可对所有文件进行读写,且无需输入 root 暗码,因此能够实现逼迫更改暗码。该模式主要用于设置错误导致系统无法启动,或者忘记 root 暗码的场景。需注意,此模式下没有网络毗连。
更改启动项

在系统启动之前的 grub 启动菜单中,按 “e” 键编辑第一个启动项。

编辑启动项进入单用户模式:


  • 将 “ro” 改为 “rw”;
  • 在这一行的最后添加设置 “init=/bin/sh”。
将 “ro” 改为 “rw” 表示在启动单用户模式时,将根目次挂载为可读写,否则在进入单用户模式后,还需运行下令 mount -o remount,rw / 才气对系统中的文件进行更改。
设置后如图:

启动单用户模式

编辑好启动项以后,按 Ctrl + x 启动。
启动后的界面:

输入 id 下令,可发现此时 shell 的权限为 root 权限:

然后即可更改导致系统不能启动的错误设置,或者直接运行 passwd 下令来更改 root 账户的暗码。
重启到正常系统

当设置修改完成后,必要在根目次创建一个 .autorelabel 文件。有了这个文件,重启时系统会重新标志 SELinux 的文件系统,以使设置生效。
  1. touch /.autorelabel
复制代码
重启进入系统
  1. exec /sbin/init
复制代码
救援模式

救援模式是从其他介质启动,该介质可以是安装系统的光盘或 U 盘。此模式相当于将系统盘作为一个外挂磁盘,因此当系统无法规复时,可用于备份紧张文件。一般在单用户模式都无法进入的情况下使用。
引导光盘启动

在光盘引导项中选择第三项:Troubleshooting(故障排除)

然后选择故障排除的第二项:Rescue a Red Hat Enterprise Linux system(拯救系统)

接着会进入救援选项,选择第一个:Continue(继续操作),输入 1 并回车。

救援模式操作

此时,救援系统会将原来的系统挂载到 /mnt/sysroot 下:

到这一步,启动的是镜像光盘里的系统。执行 ls 下令后会发现,其文件与原来系统里的文件相似,但这并非原来系统里的文件,而是镜像光盘里的文件,更改这些文件并无现实作用。原来系统里的文件被挂载到了 /mnt/sysroot 中。

切换到系统的 root 权限
系统输出了一条提示:如果想让系统的根成为救援系统的根,可运行下令 chroot /mnt/sysroot。
这条下令会更改 root 目次,执行后根目次将变动到 /mnt/sysroot 下,此时的操作就与在正常系统里操作一样了。
更改 root 暗码

更改 root 暗码可通过切换到原系统 root 权限进行更改,也可直接更改 /mnt/sysroot/etc/passwd 文件。
第一种方法
直接更改文件的方法
  1. vi /mnt/sysroot/etc/passwd
  2. # root:x:0:0:root:/root:/bin/bash
  3. ## 将 root 后面的 x 去掉,如下所示:
  4. # root::0:0:root:/root:/bin/bash
  5. reboot      # 重启
复制代码
passwd 文件包罗系统的用户设置,root 后面的 “x” 表示账户受暗码保护。如果删除这个 “x”,系统会以为 root 账户没有设置暗码,当系统重启后,root 无需暗码即可直接登录,之后再用 passwd 下令更改暗码即可。
第二种方法
获取系统 root 权限直接更改暗码,这种方法与单用户模式类似。
  1. chroot /mnt/sysroot     # 切换为原系统的 root 权限
  2. passwd      # 更改 root 密码
  3. exit        # 退出原系统 root 权限
  4. reboot      # 重启
复制代码

centos 7 重设暗码总是失败

哈哈虎 123 已于 2022 - 04 - 11 11:14:19 修改
之前学习时记录过 2 个方法,前天现实操作了 2 个服务器,一个顺利完成,另一个却始终不乐成。而且该服务器安装的是中文方式,中途出现乱码。
原来是由于自己学习用的假造机上的 centos 7 关闭了 Selnux,而此次有个服务器并未关闭 Selinux。
完成修改暗码之后,必要重置 .autorelabel 文件。
关于 autorelabel 文件的作用:


  • 下次重启系统时,它会自动重新标志 SElinux 的文件系统;
  • 这通常在首次为 SELinux 标志文件系统时,或者在差别范例的计谋之间切换时发生,比方从目标计谋更改为严酷计谋;
  • 一般用于 shell 层,重新定义 selinux 为非启动状态,否则重置 ROOT 暗码无法生效。
这是之前的学习记录:
Centos 7 忘记暗码
centos7 系统忘记 root 暗码
这里重新操作并记录一番。
方法一


  • 开机后进入编辑


  • 找到 linux16 这一行



  • 将 “ro” 改成 “rw”;
  • 如果看到的是 “zh_CN”,将其改成 “en_US”;
  • 在尾部加上 “init=/bin/bash”;
  • 完成后,按 “Ctrl + x” 运行。

  • 重设 root 暗码



  • passwd:可以简朴设置暗码,但最好设置长度大于 8 位,以免堕落重来;
  • touch /.autorelabel
    :最后肯定要加上这条更新 SELINUX 信息的下令,除非确认忘记暗码的服务器已经关闭了 Selinux。

  • exit 不管用,手动重启,即可使用新暗码。
方法二


  • 同上进入编辑(图省略)
  • 找到 linux16 这一行


    • 如果看到的是 “zh_CN”,将其改成 “en_US”;
    • 在尾部加上 “rd.break”,完成后;
    • 按 “Ctrl + x” 运行。

  • 重新 mount /sysroot,重设暗码


    • 输入 mount 可以看到最后一行显示 /sysroot 是 “ro” 方式,必须改成 “rw”;
    • mount -o remount,rw /sysroot:注意 “rw” 和 “/sysroot” 之间有空格分开;
    • chroot /sysroot;
    • passwd:可以简朴设置暗码,但最好设置长度大于 8 位,以免堕落重来;
    • touch /.autorelabel
      :最后肯定要加上这条更新 SELINUX 信息的下令,除非确认忘记暗码的服务器已经关闭了 Selinux;
    • 输入两次 exit,自动重启,即可使用新暗码。


CentOS 7 进入单用户模式修改 root 暗码

我要偷偷学习,然后惊艳所有人于 2021 - 12 - 30 13:31:31 发布
如何找回 root 暗码,对于差别版本的 CentOS,解决方法存在一些渺小区别。
这里以 CentOS 7 为例说明解决方法。
Linux 系统共有 7 个运行级别(run - level)
  1. 0:关机
  2. 1:单用户(找回丢失密码)
  3. 2:多用户无网络服务
  4. 3:多用户有网络服务
  5. 4:保留
  6. 5:图形界面
  7. 6:重启
复制代码
此中,在找回 root 暗码时,必要进入单用户模式,由于 root 用户进入单用户模式不必要暗码。
大概有同砚会有疑问,不必要暗码岂不是很不安全?现实上,进入单用户模式必要在实机上操作,且进入单用户模式必要重启服务器,重启后长途毗连早已中断,因此无需担心他人长途随意篡改暗码。
以 CentOS 7 为例,在进入到图 1 界面时,按 “e” 进入到图 2 编辑界面。

图 1 进入系统界面

图 2 编辑界面
在编辑界面找到 linux16 一行,将 “ro” 修改为 “rw init=/sysroot/bin”,然后按 ctrl + x 进入系统,接着会看到图 3:

图 3
输入 chroot /sysroot,修改目次,获取 root 权限,然后即可修改 root 暗码。如图 4 所示,使用 passwd root 修改 root 暗码,输入两遍确认即可。

图 4
最后,必要使修改的暗码生效,输入 touch /.autorelabel
即可,然后输入 reboot 重启。
到此,root 暗码就修改完毕,长途 Xshell 毗连时使用新暗码即可。

via:



  • Three Methods Boot CentOS/RHEL 7/8 Systems in Single User Mode
    https://www.2daygeek.com/boot-centos-7-8-rhel-7-8-single-user-mode/
  • 解决 centos7 修改 root 暗码报错以及无法进入单用户模式_centos7 重置 root 暗码后无法登陆 - CSDN 博客]
    https://blog.csdn.net/qq_56568435/article/details/123684391
  • RedHat&CentOS 救援模式 / 单用户模式 - 知乎
    https://zhuanlan.zhihu.com/p/398478111
  • CentOS 7 进入单用户模式修改 root 暗码_centos7 单用户修改 root 暗码 - CSDN 博客
    https://blog.csdn.net/qq_50684838/article/details/122233138
  • CentOS7 单用户模式重置 root 用户暗码 - 简书
    https://www.jianshu.com/p/337a5f9c0cb2
  • centos 7 重设暗码总是失败_centos7 重置暗码不停不乐成怎么办 - CSDN 博客
    https://wwzzhh.blog.csdn.net/article/details/124092746
  • 解决 CentOS7.x 管理员用户 root 无法登陆问题_centos7 root 无法登录 - CSDN 博客
    https://daxia.blog.csdn.net/article/details/132141925

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表