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

Stella981
• 阅读 374

# 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

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

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

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

## 2.2 last

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

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

[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

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

## 2.3 lastb

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

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

[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

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

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/.

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

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

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

## 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

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Stella981 Stella981
1年前
Linux日志系统
一、Linux系统日志与分类内核及系统日志:这种日志数据由系统服务syslog统一管理,根据其主配置文件"/etc/syslog.conf"中的设置决定将内核消息及各种系统程序消息记录到什么位置。用户日志:这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录
Wesley13 Wesley13
1年前
030 SSM综合练习06
1.权限操作涉及的三张表(1)用户表信息描述users!(https://oscimg.oschina.net/oscnet/a4a2b1f943cbc2db1c8ddd613e7ed00a9ae.png)sql语句:CREATETABLEusers(idVARCHAR2(32)DEFAU
Stella981 Stella981
1年前
Linux下用于查看系统当前登录用户信息的4种方法
1\.使用w命令查看登录用户正在使用的进程信息w命令用于显示已经登录系统的用户的名称,以及他们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括:用户名称用户的机器名称或tty号远程主机地址用户登录系统的时间空闲时间
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue