# 1 utmp、wtmp、btmp文件

Linux用户登录信息放在三个文件中:

1  /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;

2  /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;

3  /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。

这三个文件都是二进制数据文件,并且三个文件结构完全相同,是由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。

默认情况下文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。

如果不想记录相关信息,则可以直接将相关文件删除即可。如果系统不存在该文件,则需要在此路径touch一个文件就可以继续记录相关信息了。

此外:

如果想禁用who命令,则只需要将utmp的可读权限去掉就行,这样非root用户就不能用此命令了;如果是btmp文件,手工创建的话注意权限必须为600,否则不能正确写入信息。

# 2 相关命令介绍

好了,下面开始介绍查看这三个日志文件的命令了。分别是lastlog、last、lastb、ac、who、w、users、utmpdump。

其中last、lastb、who、utmpdump可以通过指定参数而查看三个中的任意一个文件。

## 2.1 lastlog:

列出所有用户最近登录的信息,或者指定用户的最近登录信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login time

lzx-clone1:/var/log # lastlog
Username Port Latest
root pts/1 Wed Oct 19 14:37:46 +0800 2016
bin **Never logged in**
daemon **Never logged in**
gdm **Never logged in**
admin **Never logged in**
lzx pts/3 Wed Oct 19 15:15:24 +0800 2016

## 2.2 last

列出当前和曾经登入系统的用户信息,它默认读取的是/var/log/wtmp文件的信息。输出的内容包括:用户名、终端位置、登录源信息、开始时间、结束时间、持续时间。注意最后一行输出的是wtmp文件起始记录的时间。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp、/var/run/utmp

[root@CLMUGR-APP-D-01 log]# last

root     pts/0        10.200.108.92    Tue Oct 18 15:04   still logged in  

root     pts/1        10.200.108.92    Wed Oct 12 17:02   still logged in  

root     pts/0        10.200.108.92    Wed Oct 12 09:20 - 16:58  (07:38)   

root     pts/0        10.200.108.92    Sat Oct  8 10:40 - 14:45  (04:05)   

root     pts/0        10.200.108.92    Wed Aug 31 10:52 - 08:44  (21:52)   

root     pts/0        10.200.108.92    Fri Jul  8 13:08 - 09:41 (25+20:32)

reboot   system boot  2.6.32-431.el6.x Tue Jan 13 19:40 - 19:44  (00:04) 

wtmp begins Tue Jan 13 19:40:22 2015 

## 2.3 lastb

列出失败尝试的登录信息,和last命令功能完全相同,只不过它默认读取的是/var/log/btmp文件的信息。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp、/var/run/utmp

[root@CLMUGR-APP-D-01 log]# lastb

root     ssh:notty    10.200.108.92    Wed Oct 19 17:11 - 17:11  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:11 - 17:11  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:10 - 17:10  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:10 - 17:10  (00:00)   

btmp begins Wed Oct 19 17:10:12 2016
lzx-clone1:/var/log # lastb -F -f /var/log/wtmp
root pts/0 10.200.108.92 Tue Mar 8 11:04:36 2016 - Tue Mar 8 11:04:36 2016 (00:00) wtmp begins Tue Mar 8 11:04:36 2016

## 2.4 ac

输出所有用户总的连接时间,默认单位是小时。由于ac是基于wtmp统计的,所以修改或者删除wtmp文件都会使ac的结果受影响。(Suse默认没有该命令)

[root@cloudexpress ~]# ac

total     7404.62

## 2.5 who

查看当前登入系统的用户信息。其中who -m等效于who am i。

语法who [OPTION]... [ FILE | ARG1 ARG2 ]。

who命令强大的一点是,它既可以读取utmp文件也可以读取wtmp文件,默认没有指定FILE参数时,who查询的是utmp的内容。当然可以指定FILE参数,比如who -aH /var/log/wtmp,则此时查看的是wtmp文件。

查看当前运行级别

[root@CLMUGR-APP-D-01 log]# who -rH

名称   线路       时间           空闲  进程号 备注

运行级别 5 2016-07-08 13:01

查看登录用户和用户数≈users

lzx-clone1:/var/run # who -q

root root root root

# users=4

## 2.6 w

查看当前登入系统的用户信息及用户当前的进程(而who命令只能看用户不能看进程)。该命令能查看的信息包括字系统当前时间,系统运行时间,登陆系统用户总数及系统1、5、10分钟内的平均负载信息。后面的信息是用户,终端,登录源,login time,idle time,JCPU,PCPU,当前执行的进程等。

w的信息来自两个文件:用户登录信息来自/var/run/utmp,进程信息来自/proc/.

lzx-clone1:/var/log # w
15:26:40 up 12 days, 56 min, 4 users, load average: 0.14, 0.16, 0.20
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root :0 10Oct16 ?xdm? 43:33 0.69s /usr/bin/gnome-session
root pts/0 Wed14 40.00s 0.19s 0.00s w
root pts/1 Wed14 23:01m 0.06s 0.06s -bash
root pts/2 10Oct16 9days 0.01s 0.01s /bin/bash -l

## 2.7 users

显示当前正在登入统的用户名。语法是users [OPTION]... [FILE]。如果未指定FILE参数则默认读取的是/var/run/utmp,当然也可以指定通用相关文件/var/log/wtmp,此时输出的就不是当前用户了。

[root@CLMUGR-APP-D-01 log]# users

root root

## 2.8 utmpdump

utmpdump用于转储二进制日志文件到文本格式的文件以便查看,同时也可以修改二进制文件!!包括/var/run/utmp、/var/log/wtmp、/var/log/btmp。语法为:utmpdump [options] [filename]。修改文件实际就可以抹除系统记录,所以一定要设置好权限,防止非法入侵。

例子:修改utmp或wtmp。由于这些都是二进制日志文件,你不能像编辑文件一样来编辑它们。取而代之是,你可以将其内容输出成为文本格式,并修改文本输出内容,然后将修改后的内容导入回二进制日志中。如下:

utmpdump /var/log/utmp > tmp_output.txt          #导出文件信息

                                                 #<使用文本编辑器修改 tmp_output.txt>

utmpdump -r tmp_output.txt > /var/log/utmp       #导入到源文件中

参考:

使用utmpdump 监控 CentOS 用户登录历史

Linux man utmpdump

http://www.cnblogs.com/lizhaoxian/p/5981029.html

https://blog.csdn.net/jsd2honey/article/details/78404337

Linux用户登录记录日志和相关查看命令汇总(转)的更多相关文章

  1. Linux用户登录记录日志和相关查看命令汇总

    # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记 ...

  2. (转)Linux用户登录记录日志和相关查看命令汇总

    原文地址:http://www.cnblogs.com/lizhaoxian/p/5981029.html # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /va ...

  3. Linux用户登录查看命令总结 - w,who,last,lastlog

    Linux用户登录查看命令总结 - w,who,last,lastlog linux shell 747 次阅读  ·  读完需要 15 分钟 0 1. 查看登录用户信息 who -H 命令输出 NA ...

  4. linux 用户管理(3)----查看用户登录时间以及命令历史

    1.查看当前登录用户信息 who命令: who缺省输出包括用户名.终端类型.登陆日期以及远程主机. who /var/log/wtmp 可以查看自从wtmp文件创建以来的每一次登陆情况 (1)-b:查 ...

  5. Linux用户登录日志查询

    # 1 utmp.wtmp.btmp文件 Linux用户登录信息放在三个文件中: 1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记 ...

  6. 对中级Linux 用户非常有用的20 个命令

    也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸. 第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户.在这里你将学会如何进行自定 ...

  7. Linux性能分析——分析系统性能相关的命令

    Linux性能分析——分析系统性能相关的命令 摘要:本文主要学习了Linux系统中分析性能相关的命令. ps命令 ps命令用来显示系统中进程的运行情况,显示的是当前系统的快照. 基本语法 ps [选项 ...

  8. (转)对中级 Linux 用户非常有用的 20 个命令

    也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸. 第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户.在这里你将学会如何进行自定 ...

  9. 初学Python-搞了一个linux用户登录监测小工具

    这几天突发奇想,想学习一下Python.看了点基础,觉得有点枯燥,所以想搞点什么.想了想,就随便弄个检测Linux用户登录的小工具吧~ 首先,明确一下功能: 1.能够捕获 linux 用户登录的信息. ...

随机推荐

  1. 为虚拟机配置NAT网络

    一.打开网络适配器 1.按图中所示进行配置 2.记得把网和VM8关联一下 3.点击网络设置 4.点击右下角小齿轮来配置ip 5.在IPv4下选择手动 6. 7. 这个就是Linux的NAT配置

  2. java之Spring集成CXF简单调用

    简介 Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF.CXF 继承了 Celtix 和 X ...

  3. ubuntu 安装完后对于开发需要做的事情

    是从 https://www.osboxes.org/ubuntu/ 下载的vdi文件,估计vmware对应的应该也有. 1. 安装 openssh-server apt-get install op ...

  4. JAVA 重写equals和重写hashCode

    面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?” 首先你需要了解: hashCode()的作用是获取哈希码(散列码) 它实 ...

  5. 安装zabbix时PHP ldap Warning

    一.如果是源码编译 [root@DaMoWang php-]# / opcache.a opcache.so # 出现告警是因为ldap模块不存在,须要编译生成此模块并重新加载 到源码包的解压目录下, ...

  6. Java IO--NIO(一)

    一.基本概念描述 1.1 I/O简介 I/O即输入输出,是计算机与外界世界的一个接口.IO操作的实际主题是操作系统.在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通 ...

  7. Dockfile基本语法

    FROM 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么可写为:FROM scratch. 接下来所写的指令将作为镜像的第一层开始. 格式: FROM <image&g ...

  8. Chrome保存整个网页为图片(终极解决方案!)

    打开需要保存为图片的网页 然后按F12,接着按Ctrl+Shift+P 在红框内输入full 点击下面的“Capture full size screenshot”就可以保存整个网页为图片了

  9. 1.1:Get Started with Unity Shaders

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 第1章开始正式进入Unity Shader的学习. 什么是Shader 本 ...

  10. Python 进程间数据交互

    进程间通信:进程之间必须需要中间件. 不同进程间内存是不共享的,要想实现两个进程间的数据交换     Queues:实现传输两个进程的数据 线程queue,访问数据只能在一个进程内进行线程与线程之间的 ...