Linux内置的审计跟踪工具:last命令
这个命令是last。它对于追踪非常有用。让我们来看一下last可以为你做些什么。
last命令的功能是什么
last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制文件,它不能被文本编辑器浏览,比如vi、Joe或者其他软件。这是非常有用的,因为用户(或者root)不能像他们希望的那样修改这个文件。
last会给出所有已登录用户的用户名、tty、IP地址(如果用户是远程连接的话)、日期-时间和用户已经登录的时间。
如何运行last
你只要在控制台中输入last即可。这是个例子:
$ lastleni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53) pungki tty1 Mon Dec 2 09:31 still logged in reboot system boot 2.6.32-358.23.2 Mon Dec 2 09:20 - 13:25 (04:05)
这里是如何阅读last信息:
第一列告诉谁是用户
第二列给出了用户如何连接的信息
pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户
tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户
除了重启活动,所有状态会在启动时显示
第三列显示用户来自哪里。如果用户来自于远程计算机,你会看到一个主机名或者IP地址。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。
剩下的列显示日志活动发生在何时。括号中的数字告诉我们连接持续了多少小时和分钟。
日常操作中last的一些示例
限制显示行的数目
当你有很多行要显示时,你可以限制你想看到的行的数目.使用 -n 参数来这么做。
$ last -n 3leni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53) pungki tty1 Mon Dec 2 09:31 still logged in reboot system boot 2.6.32-358.23.2 Mon Dec 2 09:20 - 13:25 (04:05)
-n 参数会使last显示从当前时间到以后的3条记录。
不显示主机名
使用 -R 参数来这么做。这里是例子 :
$ last -Rleni pts/0 Mon Dec 2 12:32 - 13:25 (00:53) pungki tty1 Mon Dec 2 09:31 still logged in reboot system boot Mon Dec 2 09:20 - 13:25 (04:05)
如你所见,现在在也没有关于主机或者IP地址的信息了。
最后一列显示主机名
要这么做,我们使用 -a参数
$ last -aleni pts/0 Mon Dec 2 12:32 - 13:25 (00:53) 10.0.76.162 pungki tty1 Mon Dec 2 09:31 still logged in :0.0 reboot system boot Mon Dec 2 09:20 - 13:25 (04:05) 2.6.32-358.23.2.el6.i686
现在主机信息诸如10.0.76.162 会放在最后一列。
显示完整登入登出时间日期
对于此,你可以使用 -F 参数。这个是个示例:
$ last -Fleni pts/0 10.0.76.162 Mon Dec 2 12:32:24 2013 – Mon Dec 2013 13:25:24 2013 (00:53)
打印特定的用户名
如果你想要追踪特定的用户,你可以特别打印它。在last命令后面输入用户名。
$ last lenileni tty1 Mon Dec 2 18-42 still logged in leni pts/0 Mon Dec 2 12:32 - 13:25 (00:53) 10.0.76.162
或者你想要知道reboot何时完成,你也可以这样显示它:
$ last rebootreboot system boot Mon Dec 2 09:20 - 16:55 (07:34) reboot system boot Sun Dec 1 04:26 - 04:27 (00:01) reboot system boot Wed Nov 27 20:27 - 01:24 (04:57) reboot system boot Tue Nov 26 21:06 - 06:13 (09:06)
打印特定 / pts
last同样可以打印特定tty/pts的信息. 只要在last命令后面输入tty名字或者pty名字。
这里有一些例子:
$ last tty1pungki tty1 Mon Dec 2 09:31 still logged in pungki tty1 Mon Dec 2 04:26 – down (00:00) pungki tty1 Mon Dec 2 04:07 – down (00:00) pungki tty1 Sun Dec 1 18:55 – 04:07 (09:12)$ last pts/0leni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53) pungki pts/0 :0.0 Wed Nov 27 20:28 – down (04:56)
当你看到 down 的值 - 比如上面的第二行,它意味着用户从某个时间登录直到系统重启或关机。
使用另一个文件而不是 /var/log/wtmp
默认上,last命令会从/var/log/wtmp中解析信息。如果你想要last命令从另外一个文件解析,你可以使用-f 参数。比如,当日志切割后,让我们假设切割后,之前的文件名变为/var/log/wtmp.1。那么last命令会像这样。
$ last -f /var/log/wtmp.1
显示运行级别改变
这里有个-x参数来显示运行级别。这里示例输出:
pungki tty1 Mon Dec 2 19:21 still logged in runlevel (to lvl 3) 2.6.32-358.23.2 Mon Dec 2 19:20 – 19:29 (00:08) reboot system boot 2.6.32-358.23.2 Mon Dec 2 19:20 – 19:29 (00:08) shutdown system down 2.6.32-358.23.2 Mon Dec 2 18:56 – 19:20 (00:23) runlevel (to lvl 0) 2.6.32-358.23.2 Mon Dec 2 18:56 – 18:56 (00:00) leni tty1 Mon Dec 2 18:42 – down (00:00)
你可以看到这里有两个运行级别。运行级别to lvl 3的条目意味着系统运行在完整的控制台模式,而没在X window或者GUI中。同时,当系统关机时,实际上是切换为运行级别0,这就是为什么last会显示to lvl 0。
查看失败登录
last命令用了记录成功登录,而 lastb 命令记录失败的登录尝试。你必须拥有root权限才能运行lastb命令。这里有一个lastb命令的示例输出。lastb会解析/var/log/btmp的信息。
# lastbleni tty1 Mon Dec 2 22:12 – 22:12 (00:00) rahma tty1 Mon Dec 2 22:11 – 22:11 (00:00)
切割日志
因为/var/log/wtmp记录每次的登录活动,文件的大小可能会快速地增长。默认上,Linux会每月切割 /var/log/wtmp/。切割的策略放在/etc/logrotate.conf 文件中。这里是我/etc/logrotate.conf*文件的内容。
/var/log/wtmp { monthly create 0664 root umtp minsize 1M rotate 1 }
对于 /var/log/btmp, 这里是默认的倒换活动配置
/var/log/btmp { missingok monthly create 0600 root umtp minsize 1M rotate 1 }
你可以根据需要自己修改。
总结
你可以结合这些参数来自定义last和lastb的输出。所有可以运行于last命令的参数都可运行在lastb命令上。更多细节,请通过在控制台输入man last来访问。
via: http://linoxide.com/linux-command/linux-last-command/
转载于:https://blog.51cto.com/lucifer119/1361512
相关文章:

C++/C++11中std::set用法汇总
一个容器就是一些特定类型对象的集合。顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。与之相对的,有序和无序关联容器,则根据关键字的值来存储元…

值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)
作者 | 黄浴来源 | 转载自知乎专栏自动驾驶的挑战和发展【导读】在近日发布的《值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(上)》一文中,作者介绍了一部分各大公司和机构基于激光雷达的目标检测所做的工作࿰…

java B2B2C源码电子商务平台 -commonservice-config配置服务搭建
2019独角兽企业重金招聘Python工程师标准>>> Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象…

Topshelf:一款非常好用的 Windows 服务开发框架
背景 多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows service 相关的一些开发知识(也不难&…

C++中nothrow的介绍及使用
在C中,使用malloc等分配内存的函数时,一定要检查其返回值是否为”空指针”,并以此作为检查内存操作是否成功的依据,这种Test-for-NULL代码形式是一种良好的编程习惯,也是编写可靠程序所必需的。在C中new在申请内存失败…

你猜猜typeof (typeof 1) 会返回什么值(类型)?!
typeof typeof操作符返回一个字符串,表示未经计算的操作数的类型。 语法: var num a; console.log(typeof (num)); 或console.log(typeof num) 复制代码typeof 可以返回的类型为:number、string、boolean、undefined、null、object、functi…

阿里云智能运维的自动化三剑客
整理 | 王银出品 | AI科技大本营(ID:rgznai100)近日,2019 AI开发者大会在北京举行。会上,近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者进行技术解读和产业论证。而在AIDevOps论坛上,阿里巴巴高级技术专家滕圣…

Sublime Text2.0.2注册码
直接输入注册码就可以了 ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC99798F 942194A6 02396E98 E62C9979 4BB979FE 91424C9D A45400BF F6747D88 2FB88078 90F5CC94 1CDC92DC 8457107A F151657B 1D22E383 A997F016 …
Caffe源码中Solver文件分析
Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/solver.hpp文件的内容:1. include文件: <caffe/solver.hpp>:此文件的介绍可以参考: http://b…

百度大脑金秋九月CV盛典,人脸识别新产品及伙伴计划发布会压轴开启
提起人脸识别你最先想到的是什么?是告别排队,刷脸就能支付的超市;还是告别黄牛,刷脸就能自助挂号建档的医院?其实,“刷脸”的时代早已到来,并且人脸识别技术的发展已经超越你的想象,…

BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗。 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源。 如果你已经进了ETL这个坑,而且预算有限,并且有大量的活要做; 时间紧&am…

ADO数据库操作
void CSjtestDlg::OnBnClickedButtonAdd() {// TODO: 在此添加控件通知处理程序代码this->ShowWindow(SW_HIDE);DigAdd dig ;dig.DoModal() ;this->ShowWindow(SW_SHOW);m_Grid.DeleteAllItems() ;ADOConn m_Adoconn ;m_Adoconn.OnInitADOConn() ;CString sql ;sql.Forma…
C++中try/catch/throw的使用
C异常是指在程序运行时发生的反常行为,这些行为超出了函数正常功能的范围。当程序的某部分检测到一个它无法处理的问题时,需要用到异常处理。异常提供了一种转移程序控制权的方式。C异常处理涉及到三个关键字:try、catch、throw。 在C语言中…

掌握这些步骤,机器学习模型问题药到病除
作者 | Cecelia Shao编译 | ronghuaiyang来源 | AI公园(ID:AI_Paradise)【导读】这篇文章提供了切实可行的步骤来识别和修复机器学习模型的训练、泛化和优化问题。众所周知,调试机器学习代码非常困难。即使对于简单的前馈神经网络也是这样&am…

How to list/dump dm thin pool metadata device?
2019独角兽企业重金招聘Python工程师标准>>> See: How to create metadata-snap for thin tools using? I dont think LVM provides any support for metadata snapshots so you will need to drive this process through dmsetup. The kernel interface is descri…

Linux基础(二)--基础的命令ls和date的详细用法
本文中主要介绍了linu系统下一些基础命令的用法,重点介绍了ls和date的用法。1.basename:作用:返回一个字符串参数的基本文件名称。用法:basename PATH例如:basename /usr/share/doc 返回结果为doc2.dirname:作用:返回一…
Caffe中对MNIST执行train操作执行流程解析
之前在 http://blog.csdn.net/fengbingchun/article/details/49849225 中简单介绍过使用Caffe train MNIST的文章,当时只是仿照caffe中的example实现了下,下面说一下执行流程,并精简代码到仅有10余行:1. 先注册所有层&…

华为云垃圾分类AI大赛三强出炉,ModelArts2.0让行业按下AI开发“加速键”
9月20日,华为云人工智能大赛垃圾分类挑战杯决赛在上海世博中心2019华为全联接大会会场顺利举办。经过近两个月赛程的层层筛选,入围决赛阵列的11支战队的高光时刻也如期而至。最终华为云垃圾分类挑战杯三强出炉。本次华为云人工智能大赛垃圾分类挑战杯聚焦…

王坚十年前的坚持,才有了今天世界顶级大数据计算平台MaxCompute...
如果说十年前,王坚创立阿里云让云计算在国内得到了普及,那么王坚带领团队自主研发的大数据计算平台MaxCompute则推动大数据技术向前跨越了一大步。数据是企业的核心资产,但十年前阿里巴巴的算力已经无法满足当时急剧增长数据量的需求。基于Ha…

tomcat简单配置
-----------------------------------------一、前言二、环境三、安装JDK四、安装tomcat五、安装mysql六、安装javacenter七、tomcat后台管理-----------------------------------------一、前言Tomcat是Apache 软件基金会(Apache Software Foundation)的…
使用Caffe进行手写数字识别执行流程解析
之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples实现对手写数字进行识别,这里详细介绍下其执行流程并精简了实现代码,使用Caffe对MNIST数据集进行train的文章可以参考 http://blog.csdn.net/fengbingchun/…

前端也能玩转机器学习?Google Brain 工程师来支招
演讲嘉宾 | 俞玶编辑 | 伍杏玲来源 | CSDN(ID:CSDNnews)导语:9 月 7 日,在CSDN主办的「AI ProCon 2019」上,Google Brain 工程师,TensorFlow.js 项目负责人俞玶发表《TensorFlow.js 遇到小程序》的主题演讲,…

mongoDB设置用户名密码的一个要点
2019独角兽企业重金招聘Python工程师标准>>> 增加用户之前, 先选好库 use <库名> #选择admin库后可查看system.users里面的用户数据 db.system.users.find() db.createUser 这个函数填写用户名密码与权限就行了, 在这里设置库的名称没用. 一定要用用use选择好…

基于HTML5的电信网管3D机房监控应用
先上段视频,不是在玩游戏哦,是规规矩矩的电信网管企业应用,嗯,全键盘的漫游3D机房:随着PC端支持HTML5浏览器的普及,加上主流移动终端Android和iOS都已支持HTML5技术,新一代的电信网管应用几乎一致性的首选H…

从原理到实现,详解基于朴素ML思想的协同过滤推荐算法
作者丨gongyouliu编辑丨Zandy来源 | 大数据与人工智能(ID: ai-big-data)作者在《协同过滤推荐算法》、《矩阵分解推荐算法》这两篇文章中介绍了几种经典的协同过滤推荐算法。我们在本篇文章中会继续介绍三种思路非常简单朴素的协同过滤算法,这…

C++/C++11中引用的使用
引用(reference)是一种复合类型(compound type)。引用为对象起了另外一个名字,引用类型引用(refer to)另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。 一、一般引用:一般在初始化变量时,初始值…

node.js学习5--------------------- 返回html内容给浏览器
/*** http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器*/ // 导包 const httprequire("http"); const fsrequire("fs"); //创建服务器 /*** 参数是一个回调函数,回调函数2个参数,1个是请求参数,一个是返回参数*/ let serverhttp.createServe…

内核分析阅读笔记
内核分析阅读笔记 include/Linux/stddef.h中macro offsetof define,list: #define offsetof(TYPE,MEMBER) ((size_t) &((TYPE *)0)->MEMBER) offsetof macro对于上述示例的展开剂分析:&((struct example_struct *)0)->list表示当结构example_struct正好在地址0上…

杨强教授力荐,快速部署落地深度学习应用的实践手册
香港科技大学计算机科学与工程学系讲座教授、国际人工智能联合会(IJCAI)理事会主席(2017—2019)、深圳前海微众银行首席AI 官 杨强为《深度学习模型及应用详解》一书撰序,他提到现在亟需一本介绍深度学习技术实践的图书…
OpenFace库(Tadas Baltrusaitis)中基于HOG进行正脸人脸检测的测试代码
Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具,它的源码可以从https://github.com/TadasBaltrusaitis/OpenFace下载。OpenFace主要包括面部关键点检测(facial landmard detection)、头部姿势估计(head pose estimation)、面部动作单元识别(facial acti…