答案1
该last
命令列出了系统过去成功的登录记录。这些信息存储在文件中/var/log/wtmp
,gdm
自 3.17.2 版起用于对用户列表进行排序。
如果您删除该/var/log/wtmp
文件然后重新启动,用户列表将默认按字母顺序排列。下次登录后,您的用户将成为最常用的用户,因此它将出现在列表顶部。
笔记:如果删除该文件,您将丢失系统的登录历史记录/var/log/wtmp
。您可能希望创建该文件的备份。
在 Ubuntu Desktop 20.04.3 和 21.04 中测试
答案2
根据 Alejandro 的回答,如果您不想删除该/var/log/wtmp
文件,您可以运行一个脚本,该脚本将“堆叠卡片”以确保通过使用login
和expect
命令实现特定的排序顺序。
您可以按照以下方式操作:
打开终端(如果尚未打开)
(如果需要)安装
expect
:sudo apt install expect
切换到超级用户并前往以下位置
/root
以确保清洁:sudo su cd ~
创建一个将以给定帐户登录的脚本。在本例中,我们将其命名为
logins.sh
(但您可以随意命名):vi logins.sh
笔记:可以使用任何文本编辑器。
vi
本例中的使用更多是肌肉记忆的结果,而不是明确的建议。将其粘贴到新文件中:
#!/usr/bin/expect set timeout 10 set user [lindex $argv 0] set password [lindex $argv 1] spawn login $user expect "Password:" send "$password\r" expect "$user@{hostname}:~$" send "exit\r" interact
笔记:请务必
{hostname}
与您的计算机主机一起替换。保存文件并退出。
将文件设置为可执行文件:
chmod +x logins.sh
测试一下:
./logins.sh nozomi superSecretPassword\!123
笔记:除非你和我的狗同名,否则一定要
nozomi
使用正确的帐户名和superSecretPassword\!123
正确的密码进行更改。如果你的密码包含 bash 可能误解的字符(例如)!
,请务必使用 对其进行转义\
。如果一切正常,您将看到指定的帐户已登录,大约 8 到 10 秒后,它会自动注销。
验证这添加了一条记录到
/var/log/wtmp
:last
你应该看到类似这样的内容:
$ last nozomi pts/1 Thu Sep 9 00:38 - 00:39 (00:00)
运行脚本数十次、数百次或数千次:
for i in {1 .. 999}; do /root/logins.sh nozomi superSecretPassword\!123; done
笔记:请务必将其替换
999
为您希望脚本运行的次数。请注意,该数字应大于零,并且每次运行总共需要大约 10 秒才能完成。另外,请务必将用户名和密码替换为您想要在顶部设置的帐户。如果您希望其他帐户靠近顶部,但又不想在顶部,再次运行 #8 中的命令,
for
循环中的运行次数较少。请注意,以每分钟大约 6 次的速度运行,1000 次运行将需要大约 2 小时 45 分钟的人工时间才能完成。您可能需要整夜运行。(可选)考虑修改脚本以针对多个帐户运行,并安排其每天或每周运行。
这已在原版 Ubuntu 20.04 LTS 和 21.04 上进行了测试,但应该适用于从(至少)18.04 开始的每个版本的 Ubuntu。
答案3
原因可能是您的gdm
配置可能不包括所有用户。
/etc/gdm3/custom.conf
此行为曾经在部分[greeter]
( )中配置Include=
- 但这似乎不再起作用(请参阅gdm 忽略 /etc/gdm/custom.conf 排除用户列表)。
这可能是因为azrdev
GDM3 将用户视为系统帐户,因此根本不显示在用户列表中,或者系统帐户被错误地归类为非系统帐户,因此位于列表顶部。
如果是这种情况,您可以添加一个名为的文件/var/lib/AccountsService/users/username
并更改其值
[User]
SystemAccount=true
从 GDM 欢迎程序中删除该用户。