当我启动计算机时,我收到以下消息: 无法打开对控制台的访问 root 帐户已被锁定
我在网上快速检查了一下,发现了这个: 如何解决“无法打开控制台访问根帐户已锁定”的问题
我做了什么:
- 下载 SystemRescueCD 并制作启动盘
- FDISK 和安装:
# fdisk -l # find a drive
# mkdir /mnt/tmp
# mount -t ext4 /dev/sda2 /mnt/tmp
- 在文本编辑器中打开 [mountpoint]/etc/fstab
我真的不知道该评论哪一行(一切看起来都很好)。我唯一的想法就是评论第一个(#UUID=f08d3d7e...)。
然后我重新启动,我可以使用极简 shell 进行日志记录:
我可以sudo su
,但这些文件只能读取,我无法进行任何升级或做任何有用的事情。
为了使文件可写,我mount -o remount,rw /
这样做了,外壳消失了,并且出现了黑屏。
答案1
每当依赖互联网搜索或 ChatGPT 的故障排除说明时,您应该首先考虑两件事:
- 这些说明应该解决的实际问题是什么?
- 说明书作者提出的问题是否也适用于我?所有相关条件都一样吗?
切勿盲目遵循某些说明,因为它们恰好有与您目前看到的类似的错误消息。
您的系统正尝试进入救援模式,因为某些具有“required”类型依赖项的 systemd 单元出现故障。但由于直接登录 root 帐户被禁用,因此无法提示输入 root 密码,并且允许任何人访问系统根本不安全。
注意您在问题中链接的网页说:
此问题与更换驱动器有关。
不幸的是,这并不完全正确:在更改系统上的磁盘驱动器时没有更新/etc/fstab
以匹配新配置是导致最初问题的一种方法,但它是不是唯一的方法造成这种情况。任何导致具有类型依赖性的 systemd 单元required
在启动时失败的任何情况都可能导致系统尝试进入救援模式。如果救援模式配置为在系统控制台上提供 root 登录,并且 Kali 的默认配置锁定了 root 帐户,那么这显然是救援模式配置工作方式的一个错误;这使得救援模式毫无用处。
您/etc/fstab
显然只引用了一个磁盘和一个 CD-ROM 驱动器,因此除非您最近对/dev/sda
磁盘上的前三个分区中的任何一个进行了更改,您链接的网页中的解决方案可能不适用于您的情况。
因此,您显然注释掉了/etc/fstab
涉及根文件系统的行。现在系统显然进入了紧急模式。但至少您现在可以登录并成为 root。
在紧急模式下,标准的第一步是将根文件系统设置为读/写模式,以便您可以开始修复任何错误。作为 root,您可以通过以下方式执行此操作:
mount -o remount,rw /
但如果这导致错误消息,您可能需要在根文件系统上运行手动文件系统检查。由于您的根文件系统类型为ext4
,因此命令为:
fsck.ext4 -C0 /dev/sda2
如果文件系统检查最后显示“文件系统已修改”,那么您应该在执行其他操作之前重新启动,因为内核可能已经缓存了根文件系统中的一些数据。如果该数据包含文件系统检查刚刚修复的任何错误,您不想冒险让根文件系统进入读/写模式,并可能导致内核立即将这些错误写回。
如果文件系统检查没有发现任何需要修复的内容,或者根文件系统切换到读/写模式而没有错误,那么下一步将开始找出到底是什么导致系统需要首先进入救援模式。此时可能是非常有用的命令systemctl status
。systemctl list-units --state=failed
您可能还想滚动浏览dmesg -H
输出以查看是否有任何错误。
如果您在仍处于紧急模式且根文件系统处于读/写模式时找不到任何其他故障,您可以考虑启用 root 帐户,这样您就不会再次陷入同样的困境:
usermod -e -1 root
passwd root
第一个命令将确保 root 帐户不会被过期机制锁定,第二个命令将为 root 帐户设置一个新密码,并在此过程中将其解锁。将密码设置为难以猜测的密码,以防系统在 root 帐户仍处于启用状态时连接到网络。请注意,在紧急模式下,您的键盘可能使用美国英语默认布局,而不是您通常喜欢的布局。
之后,您可以取消/etc/fstab
注释掉注释掉的行,然后再次尝试重新启动。如果系统现在正常启动,请记住再次锁定 root 帐户:
sudo passwd -l root
答案2
我用 kali-live USB 代替 SystemRescueCD 做了同样的事情。
mount -o remount,rw /
那次还好,我能够进行更新!
感谢大家的帮助!