无法打开对控制台的访问,root 帐户在 parrotOS 上被锁定

无法打开对控制台的访问,root 帐户在 parrotOS 上被锁定

我的 parrotOS 无法启动,在出现此问题之前我没有对系统进行任何重大更改。我之前重新启动系统时没有遇到任何问题。我使用的是 parrotOS 5.2。

我的 fstab 看起来不错,在这个问题发生之前我没有编辑它。

现在,当我启动计算机时,我在紧急模式下收到错误消息:


>> 无法打开对控制台的访问,root 帐户已被锁定。有关更多详细信息,请参阅 sulogin(8) 手册页。



按任意键只会重复该消息,在恢复模式下也会发生同样的情况。

我尝试过编辑 fstab(删除交换和非必需驱动器)并编辑rescue.service 文件以尝试引导sulogin —force,)但这不起作用。我还运行了 fsck,返回 0(没有错误)。

这是我在救援服务中尝试过的

ExecStart=-/bin/sh -c "/sbin/sulogin --force; /bin/systemctl --job-mode=fail --no-block default"

我认为这与 Debian 的 bug 有关 -https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802211

我找到了以下文档,但真的不知道如何处理它,如何设置环境变量 $SYSTEMD_SULOGIN_FORCE=1 ?

systemd-sulogin-shell:

  • $SYSTEMD_SULOGIN_FORCE=1 — 如果 root 密码不可用(例如 root 帐户被锁定时),则将跳过询问 root 密码。有关详细信息,请参阅 sulogin(8)。

5.2.3.如果没有 root 密码,救援启动选项将无法使用。自从 buster 以来使用 sulogin 的实现,使用救援选项启动始终需要 root 密码。如果尚未设置,则救援模式实际上无法使用。但是,仍然可以使用内核参数 init=/sbin/sulogin --force 进行引导。要将 systemd 配置为在引导到救援模式(也称为单一模式:请参阅 systemd(1))时执行与此等效的操作,请运行sudo systemctl编辑rescue.service并创建一个文件,内容如下: [Service]Environment=SYSTEMD_SULOGIN_FORCE=1 为emergency.service单元执行此操作也可能(或相反)有用,该单元在出现某些错误时会自动启动(参见systemd.special(7)),或者如果紧急情况被添加到内核命令行(例如,如果系统无法使用救援模式恢复)。有关安全影响的背景和讨论,请参阅#802211。

答案1

如果收到“无法打开对控制台的访问,根帐户已锁定...”消息该怎么办

在这种情况下,OP 需要尝试指定内核启动参数init="/sbin/sulogin --force"。由于内核参数通常由空格相互分隔,因此引号可能是必要的。

2023年5月13日,补丁被应用到systemd-sulogin-shell也允许SYSTEMD_SULOGIN_FORCE=1在内核命令行上指定。换句话说,如果您有足够新的 版本systemd,您将能够使用引导加载程序在内核引导参数中输入这些选项,以强制系统为您提供救援模式访问权限,即使 root 帐户被锁定也是如此:

SYSTEMD_SULOGIN_FORCE=1 init=/sbin/sulogin

但如果您的systemd版本早于 2023 年 5 月 13 日,这将不起作用,除非您的发行版专门向后移植了此补丁。

如何配置rescue.service为即使 root 帐户被锁定也允许访问

这是你可以提前做的当你的系统仍然正常启动时

如果您希望系统在救援模式下自动在控制台上为您提供 root shell,即使 root 帐户被锁定或 root 密码不可用,请按照以下步骤操作:

步骤1。)

systemctl edit rescue.service使用 sudo/ 以 root 身份运行。这将打开一个编辑器,/etc/systemd/system/rescue.service.d/override.conf为您创建一个文件。在旧版本的 中systemd,编辑器最初是空白的;在较新的版本中,将会有一些描述性注释和现有定义的注释版本rescue.service供您参考。在这两种情况下,只需输入以下两行:

[Service]
Environment=SYSTEMD_SULOGIN_FORCE=1

这种添加变量的方法SYSTEMD_SULOGIN_FORCE适用于systemd比以下版本更新的任何版本2018 年 10 月 17 日或者您的发行版已向后移植此补丁。

根据您的发行版,您可能emergency.service也想应用类似的修改。

第2步。)

更新您的 initramfs 文件。在 Debian 和相关发行版上,运行update-initramfs -u -k all应该可以。其他发行版使用不同的 initramfs 生成器:在现代 RedHat/Fedora 及其相关产品上,dracut -f应该可以工作。在 Arch 上,该命令可能是,mkinitcpio但我不确定需要任何选项。

rescue.service更新 initramfs 可确保 SYSTEMD_SULOGIN_FORCE=1 环境变量在每次调用时都有效。在所有可能的情况下,这可能并不是绝对必要的,但安全总比后悔好。

相关内容