如何在不使用最后命令的情况下判断用户上次登录的时间?

如何在不使用最后命令的情况下判断用户上次登录的时间?

我试图找出用户上次登录而不使用“last”的时间。最后依赖于回收的日志文件,几周后,用户的旧条目将被删除。

我确信某个地方有一个每个用户的条目仍然保留着信息。当我登录某些计算机进行维护时,它总是显示我上次登录的时间,即使是一年多前。

登录例程在哪里找到此信息?

顺便说一句,我的主要 Linux 操作系统是 Ubuntu 16.04 LTS。据我了解,从 18.04 开始,Ubuntu 将会发生重大变化。

我问在https://unix.stackexchange.com代替http://askubuntu.com因为我想确保有一个可行的解决方案,即使这个功能在下一个版本中发生变化。另外,最近在研究Raspberry PI。

问题是关于基于 Linux 的系统。

例子:

我今天(2018 年 3 月 8 日)刚刚登录到我的一台服务器。这是登录例程显示的内容:

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-1037-aws x86_64)

78 packages can be updated.
0 updates are security updates.


*** System restart required ***
Last login: Fri Nov  3 02:46:58 2017 from 72.43.238.238

日志last文件只能追溯到二月份:

$ ls -l /var/log/wtmp*
-rw-rw-r-- 1 root utmp 384 Mar  8 04:36 /var/log/wtmp
-rw-rw-r-- 1 root utmp   0 Feb  1 06:25 /var/log/wtmp.1

一些预期的任务包括从我的一些服务器中删除不活动的活动用户。

答案1

访问此信息的命令是:lastlog

lastlog - reports the most recent login of all users or of a given user

这使用了先前用户登录时间的数据库。数据库存储在/var/log/lastlog.

例子:

$ lastlog -u apollo
Username         Port     From             Latest
apollo           pts/43   127.0.0.1        Sun Feb 25 04:00:47 -0500 2018

笔记:

从命令输出listlog以及手册页的测试来看,它/var/log/laslog database似乎是永久性的(具有所有时间的条目)。您可以lastlog/etc/passwd文件中的任何人访问该条目。应用lastlog程序会报告该帐户的最后登录时间,**Never logged in**如果该帐户从未登录过,则报告该帐户。

这个示例条目可以追溯到 6 年前:

lorenzo          pts/6    ubunzeus         Fri Apr 20 21:23:18 -0400 2012

相关内容