linux日志文件utmp、wtmp

一、概述

/var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址
/var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
/var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件

二、试验

/var/log/wtmp
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取
决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录
记录,last也能根据用户、终端tty或时间显示相应的记录。

/var/run/utmp
该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保
留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,
因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。

以上提及的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所
有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看
。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。
每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后login
程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括
who、w、users和finger。
下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last
使用。

wtmp和utmp都是二进制文件,他们不能被如tail命令剪贴或合并
用户需要使用who、w、users、last和ac来使用这两个文件包含的信息
1、last命令往回搜索wtmp来显示自从文件第一次创建以来登录过得用户
last /var/log/wtmp
2、users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话
3、w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息
w /var/run/utmp
4、who命令查询utmp文件并报告当前登录的每个用户
who /var/run/utmp
5、ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时)
ac /var/log/wtmp
发表评论

相关文章