如何修复 Ubuntu 登录循环
跳出循环。
要点
如果您在 Ubuntu Linux 上陷入登录循环,请使用 Ctrl+Alt+F3 打开终端并检查或删除 .Xauthority
文件。如果这不起作用,请确保 root 拥有 /tmp
文件夹,重新配置 gdm3
,释放硬盘空间也可以让您摆脱困境。
Ubuntu 登录循环是一个令人沮丧的问题,它使您无法登录。我们描述了可能导致此行为的六个不同问题以及如何修复它们。
Ubuntu 上的登录循环是什么?
Ubuntu 登录循环是一个问题,它会让您返回到登录屏幕,而不是登录并显示桌面。就好像您的凭据被拒绝了,但事实并非如此。它只是不让您进入。即使您确实输入了正确的用户名和密码,您也会立即跳回到登录屏幕。
在计算机可能出现的所有问题中,无法登录是最可怕的问题之一。如果进不去,如何解决?值得庆幸的是,Linux 为我们提供了不止一种登录方式,我们可以在这种情况下利用它来发挥我们的优势。
事实上,这个问题也可能发生在其他发行版上。它似乎被标记为“Ubuntu 登录循环”,因为给人的印象是,运行 Ubuntu 的计算机比其他发行版更频繁地报告该问题。我怀疑这是因为运行 Ubuntu Linux 的计算机比任何其他发行版都多。
相关:Ubuntu 23.04“Lunar Lobster”中的新增功能,现已推出
检查 .Xauthority 文件的所有权
此修复仅适用于选择使用 Xorg 运行 Ubuntu 的用户,而不是在新的显示服务器 Wayland 上运行的用户。显示服务器处理屏幕绘制功能。应用程序与显示服务器通信,显示服务器写入屏幕。它用于构建您在图形桌面环境中看到的内容。
Xorg 已被 Wayland 取代作为默认显示服务器,但如果您愿意或需要,您仍然可以使用 Xorg 服务器登录 Ubuntu。一些较旧的应用程序与 Xorg 的配合比与 Wayland 的配合更好。
要使用 Xorg 登录 Ubuntu,请单击登录屏幕上的齿轮图标,然后从菜单中选择“Ubuntu on Xorg”。
此设置将在重新启动后保留。要重新使用 Wayland,您需要手动将此设置更改回“Ubuntu”。
因此,如果您一直在使用 Xorg 并发现自己处于登录循环中,那么首先要检查的是“.Xauthority”文件的所有权——如果您有的话。如果不这样做,请跳过本节和后续部分。
在登录屏幕上,按“Ctrl+Alt+F3”打开终端屏幕。
使用您常用的用户名和密码登录。
如果您有,您的“.Xauthority”文件是您的主目录中的一个隐藏文件。我们将查找带有 -a
(全部)选项的文件,以便 ls
列出隐藏文件。
ls -ahl .X*
在此计算机上,该文件存在,但它应该由当前用户拥有,而不是 root 用户拥有。但这是一个简单的修复。我们将使用 chown 命令将自己设置为所有者。当然,您可以在命令中替换您自己的用户名。
sudo chown dave:dave .Xauthority
ls
使用 ls
检查显示我们是该文件的所有者和组所有者。
如果您有一个名为“.ICEauthority”的文件,请确保您也是该文件的所有者。我们的测试计算机上没有一台。 chown
命令的格式相同:
sudo chown dave:dave .ICEauthority
通过键入“reboot”并按 Enter 重新启动,并在系统备份后尝试登录。
相关:如何在 Linux 上使用 chown 命令
删除 .Xauthority 文件
如果获取“.Xauthority”文件的所有权不起作用,请尝试将其删除并重新创建。
在登录屏幕上,使用“Ctrl+Alt+F3”打开终端窗口,然后使用 rm 命令删除该文件。
rm .Xauthority
使用 startx
命令尝试启动 X 桌面会话会强制创建新的“.Xauthority”文件。
startx
重新启动并尝试登录。
检查/tmp目录的权限
许多进程使用“/tmp”目录来存储临时文件。如果“/tmp”目录的权限混乱并且变得比所需的限制更多,那么这些进程将受到不利影响。
要检查这一点,我们需要打开一个终端屏幕,并在“/tmp”目录上使用 ls 。因此,在登录屏幕上按 Ctrl+Alt+F3,然后使用常用凭据登录。
“/tmp”目录应归 root 所有。 root 用户、root 组的成员以及所有其他用户都需要拥有该目录的读、写和执行权限。唯一的限制是其他组中的人员(在本例中是除 root 和 root 拥有的进程之外的所有人)只能更改(写入和删除)他们自己创建的文件。
cd /
ls -ahld tmp
我们可以看到“/tmp”的权限字符串是drwxrwxrwt
,它的所有者和组所有者都是“root”。
权限的意思是:
- d:这是一个目录
- rwx:所有者拥有读、写、执行权限。
- rwx:组所有者拥有读、写、执行权限。
- rwt:其他人都可以读取、写入和执行文件,但他们只能写入或删除自己创建的文件。 “t”被称为“粘性位”。
如果您看到除此之外的任何内容,请使用 chmod 命令设置这些权限:
sudo chmod 1777 /tmp
ls -ahld tmp
和以前一样,重新启动并尝试登录。
相关:如何在 Linux 上使用 SUID、SGID 和粘性位
重新配置 gdm3
Ubuntu 使用 gdm3 作为其显示管理器。显示管理器处理图形登录屏幕和图形显示服务器。有时强制刷新 gdm3 可以解决登录循环问题。
再次在登录屏幕上,使用“Ctrl+Alt+F3”打开终端窗口。
我们使用 dpkg-reconfigure 命令来刷新 gdm3。它确保所有必需的文件都存在并且依赖关系得到满足。它应该使 gdm3 处于与刚刚成功安装相同的状态。
sudo dpkg-reconfigure gdm3
重新启动,登录,看看您的问题是否已解决。
重新安装gdm3
此过程将从您的计算机中清除 gdm3 并重新安装。这是执行上一步的常用方法。我已经多次看到前面的步骤有效,但如果不起作用,这通常可以。
sudo apt purge gdm3
sudo apt install gdm3
重新启动计算机,看看问题是否已解决。
检查硬盘驱动器可用空间
硬盘空间不足与无法创建临时文件具有类似的效果。即使对“/tmp”具有正确的权限,如果没有剩余的硬盘空间,系统也无法创建文件。
相关:如何从 Linux 终端查看可用磁盘空间和磁盘使用情况
从登录屏幕中,像以前一样打开终端屏幕。我们可以使用df
来检查硬盘容量和可用空间,我们可以使用du
来查看是什么占用了空间。我们的测试机器在可用空间方面没有问题,但这就是命令的输出结果。
使用-h
(人类可读)选项强制df
对其需要显示的数字使用最合适的单位。这比尝试以字节为单位工作更容易。
df -h
“使用%”列显示已使用的空间量,以百分比表示。 “已使用”和“可用”列以实际值表示。
根文件系统挂载在“/dev/sda”上,驱动器容量已使用84%。这没什么好担心的,但是如果我们正在调查一个显示剩余空间很少的硬盘,我们可以使用 du 来发现是什么占用了空间。
我们将使用 -h
(人类可读)和 -s
(摘要)选项与 du
,并且我们正在通过管道传输输出到sort
。我们与 sort
一起使用的选项是 -h
(对人类可读的值进行排序)和 -r
(反向排序)。
这将为我们提供一个按降序排序的列表,其中最大的硬盘驱动器存储消费者位于列表顶部。
du -hs * | sort -hr
我们可以看到“Pictures”目录是迄今为止最大的罪魁祸首。我们可以增强 du
命令来查看“Pictures”目录。我们还通过 head
传递它来向我们展示 5 个最严重的违规者。
du -hs ~/Pictures/* | sort -hr | head -5
这种类型的迭代探索使我们能够识别容易实现的目标。将最大的目录复制到其他内部驱动器或外部存储,然后从我们的主目录中删除它们,将释放最大的硬盘空间。
完成此操作后,无论计算机上最大的目录是什么,您的系统都应该允许您登录。
打破循环
Ubuntu 登录循环就像被锁在自己家门外一样。你有正确的钥匙,但门仍然打不开。值得庆幸的是,对于 Linux,我们还有其他的门可以使用。一旦我们进去,我们就可以尝试找出是什么阻止了前门的工作。
相关:如何使用 GRUB Rescue 修复 Linux