清除 CentOS 用户登录历史

 

2020-02-23

前段时间为了方便以后开测试资源,便在 PVE 上建了一个 CentOS7 的模版,设置完成后为了还原回一个较干净的系统,便去查了下如何清理登录记录,故记于此。

查看登录记录

在 CentOS 中,查看登录记录的命令主要是lastlastblastlog,对应保存在 /var/log/ 目录下:

  • last: /var/log/wtmp 记录已成功登录的用户列表;
  • lastb: /var/log/btmp:记录尝试登录的用户列表;
  • lastlog: /var/log/lastlog:记录最近登录的用户信息;

不过上面提到的文件都是以二进制格式存储,虽然可以通过命令查看对应的信息,却无法直接修改,这时我们便可以借助 utmpdump 这个命令。

清除登录记录

utmpdump 是一个以原始格式转储 UTMP 和 WTMP 文件的程序,除了可以用于查看或监控文件的变化之外,也可以互转二进制文件和文本格式:

Terminal window
1
# 查看二进制文件
2
utmpdump /var/log/wtmp
3
# 监控文件变化
4
utmpdump -f /var/log/wtmp
5
6
# 将文本格式转为二进制文件
7
utmpdump -r /var/log/wtmp.bak > /var/log/wtmp

所以,当我们想删除最近的登录记录时,便可以先把对应的文件转换为文本格式后再去修改:

Terminal window
1
# 将二进制文件转为文本格式
2
utmpdump /var/log/wtmp > /var/log/wtmp.bak
3
# 删除 root 用户登录记录
4
set -i "/root/d" /var/log/wtmp.bak

待完成修改后,再将文本文件转回二进制文件即可;不过也可以用更简单的方法,即使用命令 echo > /var/log/wtmp 直接清空记录。

注:-r 参数主要用于调试或测试,请勿在生产环境使用。

参考