为什么我的系统上有这么多访客账户?

在我看到this answer后,我意识到我的系统上有许多访客账户:

grep guest /etc/passwd
guest-jzXeRx:x:117:127:访客,,,:/tmp/guest-jzXeRx:/bin/false
guest-l5dAPU:x:118:128:访客,,,:/tmp/guest-l5dAPU:/bin/false
guest-FdSAkw:x:119:129:访客,,,:/tmp/guest-FdSAkw:/bin/false
guest-eBU0cU:x:121:131:访客,,,:/tmp/guest-eBU0cU:/bin/false

此外,此刻没有人以访客身份登录,但如果有人登录为访客,将创建一个新的访客账户 - 为什么,既然已经有其他访客账户了?当新的访客退出登录后,他的账户将被删除。但为什么其他的访客账户保留下来?有什么用途/目的呢?

对我来说,这个访客账户无关紧要,但我想知道手动删除它们是否可以。


你使用的是哪个Ubuntu版本?默认情况下,每当你以访客身份登录时,都会创建一个新的访客账户,并在你退出登录时删除该账户,所以创建一个新的用户账户是正常的。也许在删除这些用户账户时出了一些问题... - Salem
顺便说一句,如果你好奇的话,你可以看看如何在/usr/sbin/guest-account中创建/删除访客账户。 - Salem
4个回答

当您从访客会话注销时,/etc/passwd/etc/group中的guest-XXXXXX条目通常会被删除。也许您在注销之前以某种方式重启了几次。

您可以安全地删除这些条目。如果您按照以下步骤进行操作:

sudo deluser guest-jzXeRx

对于各个客户的用户名,将会清理掉 /etc/passwd/etc/group 文件。

是的,只有在我强制重新启动(当然,不需要注销)之后,这些账户才不会被删除。 - Radu Rădeanu

我要说两句。这是很正常的。
在Ubuntu中,普通用户可以拥有1000+的用户ID(uid),而低于1000的uid则分配给系统应用程序和守护进程。此外,访客账户会定期删除。所以,如果你想完全检查系统上有多少用户,只需按下键盘上的Ctrl+Alt+T组合键打开终端。当终端打开后,运行以下命令:
cat /etc/passwd | grep /home

编辑

对于我来说,访客账户会定期删除(我登录了超过10次,但是没有一个在/etc/passwd中长时间停留)。你可能想自己试试。

现在,Ubuntu的访客账户是一种特殊类型的账户,它的主目录被设置为tmpfs文件系统的挂载点,该文件系统用于存储在重新启动后会丢失的数据。

tmpfs中的数据存储在RAM中,使用交换空间作为备份,所以这些数据很可能从未被写入磁盘,因此基本上没有什么可以恢复的东西。

由于tmpfs是临时存储,它被设计为以挂载文件系统的形式出现,但实际上存储在易失性内存中,而不是持久性存储设备中。在tmpfs中存储的所有内容都是临时的,意味着不会创建任何文件;然而,在重启时,tmpfs中的所有内容都将丢失。


当系统中没有任何人以访客身份登录时,grep guest /etc/passwd 命令在您的情况下会输出什么内容? - Radu Rădeanu
这是一个结果的图片 - Mitch
那时候没有任何人以访客身份登录吗?我问这个问题是因为通常只有在访客登录时才会设置默认的shell /bin/bash - Radu Rădeanu
没有人以访客身份登录,我甚至重新启动了系统,就在我添加屏幕输出之前。 - Mitch
所以,我不是唯一一个有这个“问题”的人。我不清楚这些账户是从哪里出现的。就像我说的,也像你说的,客人登出后,他的账户将被删除。 - Radu Rădeanu

如你所知,每次一个用户启动一个访客会话时,都会创建一个临时用户,其权限受限,并且当用户结束会话时,与该会话相关的数据将被删除。
但是下一次如果其他用户尝试进行访客会话,就需要再次创建一个新的访客会话,并生成新的访客ID。
因此,Ubuntu将所有已创建的访客ID设置为false,这样当你将用户的shell设置为/usr/bin/false时,他们将无法使用旧的访客ID登录,而必须每次创建新的ID。在你的问题中,我们有许多访客用户guest-jzXeRx,guest-l5dAPU,guest-FdSAkw,guest-eBU0cU。这些都是访客ID,你将无法使用它们登录下一次。
希望对你有所帮助,我的朋友。

删除所有访客账户:
for line in $(grep -o 'guest-......'  /etc/passwd | sort -u); do sudo deluser $line; done

示例输出:

Removing user `guest-2LGMce' ...
Warning: group `guest-2LGMce' has no more members.
Done.
Removing user `guest-5T4CBr' ...
Warning: group `guest-5T4CBr' has no more members.
Done.
Removing user `guest-8eZELT' ...
Warning: group `guest-8eZELT' has no more members.
Done.

  • 相关问题