【引言】
最近碰到一个诉求,在排查一数据库异常时,需要查看最近或者某短时间内都有哪些人登录过服务器,以便问题回溯。那么,怎么才能查看到在一段时间内都有哪些用户登录过服务器呢?本文将介绍了如何使用last命令查看哪些用户登录过服务器。
last命令用来列出目前与过去登录系统的用户相关信息。指令英文原义:show listing of last logged in users。last是一个命令行实用程序,用于显示有关系统用户的最后登录会话的信息。当你需要跟踪用户活动,或调查可能的安全漏洞时,此功能非常有用。
首先介绍一下last命令是干啥用的?
last作用是显示近期用户或终端的登录情况。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接系统。
执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。
再来看下last的命令格式。
#last -help
last: invalid option -- 'h'
Usage: last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username..] [tty..]
参数解释如下:
-num |-n num指定输出记录的条数
-f file 指定记录文件作为查询的log文件
-t YYYYMMDDHHMMSS 显示指定时间之前的登录情况
username 账户名称
tty 终端机编号
-R 不显示登录系统或终端的主机名称或IP
-a 将登录系统或终端的主机名过IP地址显示在最后一行
-d 将IP地址转成主机名称
-I 显示特定IP登录情况。
-o 读取有linux-libc5应用编写的旧类型wtmp文件
-x 显示系统关闭、用户登录和退出的历史
-F 显示登录的完整时间
-w 在输出中显示完整的用户名或域名
举几个栗子:
#显示最近登陆服务器的10个ip
[root@apmdb1 ~]# last -n 10
root pts/7 192.168.0.117 Mon Jun 15 22:43 still logged in
root pts/8 192.168.0.43 Mon Jun 15 19:29 - 20:18 (00:48)
root pts/7 192.168.0.43 Mon Jun 15 19:25 - 20:18 (00:52)
root pts/9 192.168.0.43 Mon Jun 15 19:15 - 19:25 (00:10)
root pts/12 192.168.0.43 Mon Jun 15 19:06 - 19:29 (00:23)
root pts/11 192.168.0.43 Mon Jun 15 19:05 - 20:18 (01:12)
root pts/10 192.168.0.107 Mon Jun 15 19:00 - 19:11 (00:11)
root pts/9 192.168.0.43 Mon Jun 15 18:59 - 19:15 (00:16)
root pts/7 192.168.0.102 Mon Jun 15 18:53 - 19:18 (00:25)
root pts/12 192.168.0.107 Mon Jun 15 18:18 - 18:32 (00:13)
wtmp begins Fri Mar 29 15:40:28 2019
#将登录系统的主机名或IP地址显示在最后一行
[root@apmdb1 ~]# last -10 -a
root pts/8 Mon Jun 15 22:48 still logged in 192.168.0.117
root pts/7 Mon Jun 15 22:43 - 22:55 (00:12) 192.168.0.117
root pts/8 Mon Jun 15 19:29 - 20:18 (00:48) 192.168.0.43
root pts/7 Mon Jun 15 19:25 - 20:18 (00:52) 192.168.0.43
root pts/9 Mon Jun 15 19:15 - 19:25 (00:10) 192.168.0.43
root pts/12 Mon Jun 15 19:06 - 19:29 (00:23) 192.168.0.43
root pts/11 Mon Jun 15 19:05 - 20:18 (01:12) 192.168.0.43
root pts/10 Mon Jun 15 19:00 - 19:11 (00:11) 192.168.0.107
root pts/9 Mon Jun 15 18:59 - 19:15 (00:16) 192.168.0.43
root pts/7 Mon Jun 15 18:53 - 19:18 (00:25) 192.168.0.102
wtmp begins Fri Mar 29 15:40:28 2019
提示:
上面最后一行也可以看出,每次用户登录系统时,该会话的记录都会写入/var/log/wtmp文件中。last读取文件wtmp文件并打印有关用户登录和注销的信息。从最近的记录开始,记录按时间倒序输出。
#显示用户登出时间的记录-x。
[root@apmdb1 ~]# last -n 15 -f /var/log/btmp -x
root ssh:notty 192.168.0.43 Mon Jun 15 18:08 gone - no logout
root ssh:notty 192.168.0.241 Thu Jun 11 19:43 - 18:08 (3+22:24)
root ssh:notty 192.168.0.16 Wed Jun 10 16:00 - 19:43 (1+03:42)
root ssh:notty 192.168.0.16 Wed Jun 10 14:04 - 16:00 (01:56)
root ssh:notty 192.168.0.117 Fri Jun 5 09:28 - 14:04 (5+04:36)
root ssh:notty 192.168.0.117 Fri Jun 5 09:28 - 09:28 (00:00)
btmp begins Fri Jun 5 09:28:08 2020
【总结】
1.last命令不常用,今天玩了下,感觉在回溯问题上还是很给力的;
2.好记性不如烂笔头,本文记录之,方便以后查阅。
以下为个人公众号“一森咖记”,欢迎关注。