我犯了一个错误,无法再登录我的 fedora (18) 机器。系统只有一个用户,当我以该用户身份登录时,我锁定了该用户,使其无法创建新进程,然后我终止了该用户的所有进程,包括 Xorg。
在登录屏幕上,当我尝试使用用户名和密码登录时,无法进行身份验证。
当我尝试在命令行中登录(通过按ctr+alt+f1
)并以 root 身份登录时,它会要求我输入密码。问题是我从未设置过 root 密码。
我在 Google 上找到了有关这个init=/bin/bash
技巧的信息,即在 grub 的引导记录中添加此行,然后启动 bash。这个方法有效,我有一个以 root 身份登录的 bash。但是,当我尝试使用 为passwd
root 提供密码时,我得到了一个Authentication token manipulation error
。使用 解锁用户帐户passwd -u username
也不起作用,因为一切都是read-only file system
。添加另一个用户对我来说也不起作用,因为我没有命令useradd
。
编辑
我又进一步了解了一下,现在我知道我可以通过 grub 中的使用来避免只读文件系统rw init=/bin/bash
。如果我随后使用 解锁passwd -u username
,它会告诉我解锁成功了。我还可以更改 root 密码。
但是,现在,当我尝试启动 fedora 以进入登录屏幕时,它甚至没有进入,而是卡在显示 fedora 徽标的地方。我可以切换到另一个 tty,它会提示我登录。但是当我尝试以用户或 root 身份使用新密码登录时,它失败了。
有人能帮助我摆脱这个困境吗?
答案1
从您的编辑来看,您可能已经把一些东西弄乱了(从您在这里提供的细节来看,我不能完全清楚是怎么回事),以至于重新安装可能对您更有利。然而...
为了解决您最初遇到的在被锁定的系统上设置密码的问题;这实际上非常简单。
我通常会启动 Live CD(或我最初安装操作系统时使用的任何媒体),然后使用它chroot
虚拟化到(已安装的)主系统的根目录。此时,该/
目录将重新映射到/
硬盘上实际系统的目录,并且您将拥有 root 访问权限。在执行此操作之前,请确保您已安装全部您正在救援的系统的相关卷。
例如,如果您最初有:
/dev/sda1 on /boot
/dev/sda2 on /
/dev/sda3 on /home
/dev/sda4 on /var
您必须按如下方式将它们安装到实时/救援系统中:
/dev/sda2 on /mnt/rescued
/dev/sda1 on /mnt/rescued/boot
/dev/sda3 on /mnt/rescued/home
/dev/sda4 on /mnt/rescued/var
然后你当然可以运行passwd
(或任何其他恢复系统所需的 root 命令)。只要你的系统没有磁盘加密,此方法就可以正常工作。
passwd
关于您当前的问题:您的环境中的重置可能init=/bin/bash
实际上没有“坚持”,因为密码数据库文件位于当时未安装的安装点上。这种情况不太可能发生,但有可能,具体取决于您的安装点。
根据您提供的信息,这是我能提供的最好的解决方案。但是,这确实是一个“故障排除”问题,需要反复操作才能恢复系统正常运行;因此,我建议您使用根访问聊天与我们中的一些人聊天,以互动的方式解决问题。对于解决这种非常本地化的问题,它是一种比问答网站更好的媒介。
我现在将你的问题保留,但请注意,根据你问题中的信息,可能没有人清楚如何修复你的系统(无需重新安装),特别是现在你已经“弄乱”了它并引入了启动问题并且无法正确进入桌面环境。
答案2
您的根文件系统可能是只读的。重新挂载它:mount -o remount,rw /dev/mapper/fedora-root(输入您的设备名称)然后更改密码。