linux last命令:说,前几天你是不是登陆某台服务器误操作了?

  • Post author:
  • Post category:linux



【引言】


最近碰到一个诉求,在排查一数据库异常时,需要查看最近或者某短时间内都有哪些人登录过服务器,以便问题回溯。那么,怎么才能查看到在一段时间内都有哪些用户登录过服务器呢?本文将介绍了如何使用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.好记性不如烂笔头,本文记录之,方便以后查阅。


以下为个人公众号“一森咖记”,欢迎关注。

image.png



版权声明:本文为db_murphy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。