azr*_*dev 13 gdm login-screen login
我是使用 gdm 的系统上唯一频繁使用的用户,但在登录屏幕的用户列表中,我没有向上移动(由于最频繁的使用),并且我找不到手动对用户进行排序的可能性。我确认它们不是按数字 UID 排序的。同样的问题已在这里得到解答(这里还有另一个相关问题),但对于使用 consolekit 的旧系统,它同时已被 systemd-logind 和 AccountsService 取代。
Ale*_*dro 10
该last命令列出了系统上过去的成功登录。此信息存储在/var/log/wtmp文件中,自版本 3.17.2 起使用该信息gdm对用户列表进行排序。
如果删除该/var/log/wtmp文件然后重新启动,用户列表将默认按字母顺序排列。下次登录后,您的用户将成为最常用的用户,从而显示在列表的顶部。
注意:如果删除该/var/log/wtmp文件,您将丢失系统的登录历史记录。您可能想要创建该文件的备份。
在 Ubuntu 桌面 20.04.3 和 21.04 中测试
根据 Alejandro 的答案,如果您不想删除文件,可以运行一个脚本,该脚本将“堆叠甲板”,以通过使用和命令/var/log/wtmp确保特定的排序顺序。loginexpect
您可以这样做:
打开终端(如果尚未打开)
(如果需要)安装expect:
sudo apt install expect
Run Code Online (Sandbox Code Playgroud)
/root为了简洁起见,切换到超级用户并前往:
sudo su
cd ~
Run Code Online (Sandbox Code Playgroud)
创建一个将以给定帐户身份登录的脚本。对于此示例,我们将其命名为logins.sh(但您可以随意命名):
vi logins.sh
Run Code Online (Sandbox Code Playgroud)
注意:随意使用任何文本编辑器。在这个例子中的使用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
Run Code Online (Sandbox Code Playgroud)
注意:一定要更换{hostname}为您电脑的主机。
保存文件并退出。
将文件设置为可执行文件:
chmod +x logins.sh
Run Code Online (Sandbox Code Playgroud)
测试一下:
./logins.sh nozomi superSecretPassword\!123
Run Code Online (Sandbox Code Playgroud)
注意:除非您与我的狗同名,否则请务必nozomi使用正确的帐户名和superSecretPassword\!123正确的密码进行更改。如果您的密码包含 bash 可能会误解的字符(例如 )!,请务必使用 转义它们\。
如果一切正常,您将看到指定的帐户已登录,大约 8~10 秒后,它会自动注销。
验证这已将记录添加到/var/log/wtmp:
last
Run Code Online (Sandbox Code Playgroud)
你应该看到这样的东西:
$ last
nozomi pts/1 Thu Sep 9 00:38 - 00:39 (00:00)
Run Code Online (Sandbox Code Playgroud)
运行脚本数十次、数百次或数千次:
for i in {1 .. 999}; do /root/logins.sh nozomi superSecretPassword\!123; done
Run Code Online (Sandbox Code Playgroud)
注意:请务必替换999为您希望脚本运行的次数。请注意,该数字应大于零,并且每次运行总共需要大约 10 秒才能完成。另请务必将用户名和密码替换为您想要在顶部设置的帐户。
如果您希望在顶部附近有其他帐户,但不在顶部,请再次运行 #8 中的命令,并减少循环中的运行次数for。请注意,以每分钟大约 6 次运行的速度计算,1000 次运行将需要大约 2 小时 45 分钟的人类时间才能完成。您可能想过夜运行它。
(可选)考虑修改脚本以针对多个帐户运行,并安排其每天或每周运行。
这已经在 Ubuntu 20.04 LTS 和 21.04 上进行了测试,但应该适用于(至少)18.04 以上的每个版本的 Ubuntu。