last是linux的一个内置工具,可以用来查看最后登录服务器的用户。它对于追踪非常有用。

last命令显示的是来自/var/log/wtmp文件创建起,所有登录的用户。这个文件是一个二进制文件,不能直接用文本编辑器浏览,可以通过linux提供的api对其进行访问。这个是非常有用处的,因为用户不能想他们希望的那样随意的修改这个文件。

last命令会输出:已经登录的用户的用户名、登录终端、登录地址、日期、时间和用户已经登录的时间。

如果你是一个服务器管理员,你或许知道你要保护你的服务器的话,不仅是从外部,还要从内部保护。linux有一个内置工具来看到最后登陆服务器的用户,可以帮助你保护服务器。

这个命令是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 inreboot 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 inreboot 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 inreboot 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.162pungki tty1 Mon Dec 2 09:31 still logged in :0.0reboot 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 inleni 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 inpungki 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 inrunlevel (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}

你可以根据需要自己修改。

转自:http://www.lupaworld.com/article-235976-1.html

备注:last reboot显示结果

reboot  system boot 2.6.18-194.e15  Mon May 17 14:22  (33+11:23)

用户名reboot说明了是系统内置命令reboot自动启动服务器,

登录终端system boot说明了reboot是从系统引导来登录服务器的(可以这么理解),

登录地址2.6.18-194.e15说明了linux系统内核的版本。

日期Mon说明是那天是周一,

时间May 17 14:22说明了系统执行reboot的具体时间。

括号运行时间在这里的意思是,系统reboot在时间5月17号14:22重启启动到现在运行了多长时间。

如果有多行的reboot,则前面的reboot括号时间可以理解为 reboot所在行,在启动时间重启后到下次reboot运行了(多长时间)--这行最后的括号。。

也就是这次reboot后,系统重启后,服务器运行了多长时间。

linux内置的审计跟踪工具------last和lastb的更多相关文章

  1. mac内置的FTP工具

    在 Mac OS X 系统下,有不少优秀的 FTP 工具,如 Cyberduck.Transmit,但是你是否知道除了这些第三方应用,系统已经为你准备好了一个内置的 FTP 工具?/ M: e0 J% ...

  2. 卸载Linux内置的AMP软件

    卸载Linux内置的AMP软件 在安装Linux软件的LAMP环境时,必须有一个前提:必须要完全卸载掉系统内置的AMP软件. 1.卸载httpd软件(Apache) 如果在卸载软件时出现依赖关系,我们 ...

  3. bash的内置字符串处理工具

    bash内置字符串处理工具: 1.字符串切片: ${var:offset:number} 取字符串的子串: ${var:  -length} 取字符串的最右侧的length个字符.注意:冒号右侧必须有 ...

  4. JDK内置性能监测工具使用

    Java自带的性能监测工具用法简介——jstack.jconsole.jinfo.jmap.jdb.jsta.jvisualvmJDK内置工具使用 一.javah命令(C Header and Stu ...

  5. Spring中内置的一些工具类

    学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工 ...

  6. Linux内置命令

    主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1 bash内置命令 ...

  7. 使用Netbeans内置的Git工具

    在 NetBeans IDE 中使用 Git 支持 NetBeans IDE 为 Git 版本控制客户端提供支持.通过利用 IDE 的 Git 支持,您可以从 IDE 内的项目中直接执行版本控制任务. ...

  8. Flask内置命令行工具—CLI

    应用发现 flask命令在Flask库安装后可使用,使用前需要正确配置FLASK_APP环境变量以告知用户程序所在位置.不同平台设置方式有所不同. Unix Bash (Linux, Mac, etc ...

  9. 页面静态化1 --- 概念(Apache内置压力测试工具使用方法)

    三个概念 ①静态网址: http://127.0.0.1/regis.html ②动态网址:在请求页面时可以动态的传一些值进去. http://127.0.0.1/regis.php?id=45&am ...

随机推荐

  1. TCSQL实时列表缓存数据库帮助文档

    [文章作者:张宴 本文版本:v1.1 最后修改:2010.09.03 转载请注明原文链接:http://blog.zyan.cc/tcsql/] 曾经有人提出,一般数据库缓存分为四种.第一种:单个对象 ...

  2. android自定义控件(9)-Android触摸事件分发机制

    触摸事件的传递机制:   首先是最外层的viewgroup接收到事件,然后调用会调用自己的dispatchTouchEvent方法.如果在ACTION_DOWN的时候dispatchTouchEven ...

  3. iOS- Terminating app due to uncaught exception 'NSRangeException'

    错误描述: Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM object ...

  4. XPath使用小结

    参考资料: http://www.w3school.com.cn/xpath/xpath_nodes.asp

  5. uname是什么?

    uname= unix +name, 是指unix 这个操作系统的 名字, 包括 主机名, 内核版本 架构 平台名称等等

  6. ConcurrentHashMap-----不安全线程hashmap-安全线程-hashtable

    JDK1.0引入了第一个关联的集合类HashTable,它是线程安全的.HashTable的所有方法都是同步的.JDK2.0引入了HashMap,它提供了一个不同步的基类和一个同步的包装器synchr ...

  7. [设计模式] javascript 之 享元模式;

    享元模式说明 定义:用于解决一个系统大量细粒度对象的共享问题: 关健词:分离跟共享: 说明: 享元模式分单纯(共享)享元模式,以及组合(不共享)享元模式,有共享跟不共享之分:单纯享元模式,只包含共享的 ...

  8. [译]bare repository

    git init --bare 使用--bare创建的repository没有工作目录, 在这个repository中不能修改文件和commit. 中心repository必须是bare reposi ...

  9. javaweb框架构想-自己的对象存储池-遁地龙卷风

    设计初衷: 网站在提供服务的过程中,会创建很多对象,bean,dao层的对象尤为频繁,然而这些对象是可以重复利用的.设计思路: 对象连接池ObjectPool才用单态的设计模式,自带线程,每隔一段时间 ...

  10. Moment.js 超棒Javascript日期处理类库

    Moment.js 不容错过的超棒Javascript日期处理类库 主要特性: 3.2kb超轻量级 独立类库,意味这你不需要倒入一堆js 日期处理支持UNIX 时间戳,String,指定格式的Date ...