在之前介绍过Linux的系统日志secure,btmp,wtmp这三个指令。https://zinyan.com/?p=456
而本篇内容,主要介绍如何清理Linux中缓存的各种登录日志。
在清理前,再顺便学习三个指令:
w
:指令用于显示目前登录Linux系统的用户,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
实例如下:
[root@iZuf ~]# w
16:22:20 up 8 days, 7:22, 1 user, load average: 0.13, 0.07, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 183.94.152.89 09:31 1.00s 0.04s 0.00s w
在上面的显示内容可以看到用户名,来源ip地址,登录时间等等信息。
还可以添加参数,进行过滤显示的内容,格式如下:
w [-fhlsuV][用户名称]
实例:
[root@iZuf ~]# w -f
16:26:22 up 8 days, 7:26, 1 user, load average: 0.00, 0.02, 0.00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 09:31 2.00s 0.05s 0.00s w -f
[root@iZuf ~]# w -f -h
root pts/0 09:31 2.00s 0.05s 0.00s w -f -h
who
:指令用于显示系统中有哪些使用者正在连接。
效果如下:
[root@iZuf ~]# who
root pts/0 2023-07-18 09:31 (183.94.152.89)
和w指令一样,也可以添加参数,格式如下:(方括号里面的都是可选项)
who [-Hus]
参数说明:
实例:
[root@iZuf ~]# who -H
NAME LINE TIME COMMENT
root pts/0 2023-07-18 09:31 (183.94.150.8)
[root@iZuf ~]# who -u
root pts/0 2023-07-18 09:31 . 160605 (183.94.152.89)
[root@iZuf ~]# who -s
root pts/0 2023-07-18 09:31 (183.94.152.89)
users
:指令用于打印当前登录的用户名列表。
实例如下:
[root@iZuf ~]# users
root
总而言之,这三个指令的功能都很类似。都可以显示当前正在访问系统的账户。但是显示的内容维度和信息层度是不一样的。
如果直接说btmp和wtmp可能不太理解。我们换成指令就能理解了:
last
: 阅读的wtmp文件,文件存储在:/var/log/wtmp
。记录所有正确登录到系统的用户信息。
lastb
:阅读的btmp文件,文件存储在:/var/log/btmp
。记录所有登录失败的日志。
实例如下:(汇总了一下登录失败的错误ip的数量)
[root@iZuf ~]# lastb | awk '{ print $3}' | sort | uniq -c | sort -n
1
1 47.101.149.21
1 Fri
1 Sun
2 144.126.230.226
2 165.227.151.19
6 80.94.92.46
29 80.94.92.241
5544 170.64.187.244
7112 172.233.214.47
27896 139.162.204.109
我们如果要清理lastb查询的信息。首先需要root权限。如果你的账户权限没有root权限,那么是无法清理的。
而清理方法很简单:
使用> filename
命令进行清理就可以了。
例如清理btmp文件:
[root@iZuf ~]# > /var/log/btmp
清理完毕后,再通过lastb进行查询时就是空的了:
[root@iZuf ~]# lastb | awk '{ print $3}' | sort | uniq -c | sort -n
1
1 Tue
[root@iZuf ~]#
同样的清理wtmp 文件:
[root@iZuf ~]# > /var/log/wtmp
就可以清理了。