登录相关的日志涉及到系统的安全,所以是系统管理中非常重要的一部分内容。本文试图对登录相关的日志做一个整理。

/var/log/auth.log

这是一个文本文件,记录了所有和用户认证相关的日志。无论是我们通过 ssh 登录,还是通过 sudo 执行命令都会在 auth.log 中产生记录。执行

$ ssh nick@myserver

上图显示日志记录了通过秘钥认证的方式登录主机并退出的过程。

再执行下面的命令试试:

$ sudo vim /var/log/auth.log

日志同样会详细的记录本次 sudo 操作的过程。从中我们可以看到是哪个用户通过 sudo 执行了什么命令!

/var/run/utmp

这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。
它记录当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users 等就需要访问这个文件。

/var/log/wtmp

这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last 命令就通过访问这个文件获得这些信息。

/var/log/btmp

这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。
这个文件记录的是所有失败的登录尝试,使用 last 命令及其 -f 选项可以查看这个文件的内容:

$ sudo last -f /var/log/btmp

/var/log/lastlog

这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。
它会记录系统中所有用户最近一次登陆的信息。比如我们通过 ssh 登录时提示的此用户最后一次的登录时间,就是从这个文件中取出的:

其实这个文件的主要使用者是 lastlog 命令。

特别是 /var/run/utmp、/var/log/wtmp 和 /var/log/lastlog 这三个文件,它们都是日志系统中的关键文件,并且具有如下的逻辑联系:
当一个用户登录系统时,login 程序在 lastlog 文件中查看用户的 UID。如果该用户存在,就把该用户上次登录、注销的时间以及从哪个主机登录的信息写到标准输出中。然后 login 程序在 lastlog 中记录新的登录时间,并打开 utmp 文件添加用户本次的登录记录。接下来,login 程序打开 wtmp 文件并添加用户在 utmp 文件中的记录。当用户退出时会把更新的 utmp 文件中的记录添加到 wtmp 文件中,并从 utmp 文件中删除用户的记录。

我们可以看到除了 auth.log 文件,其它几个文件都是二进制文件,因而不能使用 less 之类的命令直接查看。下面我们来介绍和登录相关的一些命令,其实它们几乎都是通过查询这些日志文件来提供信息的。

lastlog 命令

lastlog 命令用来显示系统中所有用户最近一次登陆的信息:

图中显示的只是完整列表的一部分,**Never logged in** 表示该用户从来没有登陆过。如果要查看某个用户的最后登陆信息,可使用 -u 选项:

其实 lastlog 命令就是从 /var/log/lastlog 文件中取出的内容。

last 命令

last 命令用来显示用户最近登录的信息。执行 last 命令,它会读取 /var/log/wtmp 文件的内容。并把该文件记录的用户登录历史全部显示出来:

$ last

信息记录了谁在什么时间从哪里登录了服务器,登录了多长时间。需要注意的是系统中的 wtmp 日志文件经常会被轮转,所以有时你需要显式的指定 last 命令从哪个文件中读取信息:

$ last -f /var/log/wtmp.

如果我们想快速知道系统最后一次的重启时间,可以使用下面的命令:

$ last reboot

who 命令

who 命令通过查询 /var/run/utmp 文件来显式系统中当前登录的每个用户。默认的输出包括用户名、终端类型、登录日期及远程主机:

w 命令

如果能够查询到当前登录系统的用户都在干什么是不是一件令人很兴奋的事情呢!使用 w 命令就可以做到:

$ w

我们可以看到用户 nick 同时登录了两个终端,在其中一个终端中执行了 w 命令,而在另一个终端中正通过 vim 编辑  /etc/passwd 文件!
其实 w 命令是先通过查询 utmp 文件获得当前登录的用户,然后显示每个用户和它所运行的进程信息。

users 命令

users 命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示多次:

因为 nick 通过三个终端登录了主机,所以在同一行中名字出现了三次。

总结

本文整理了 Ubuntu 系统中常见的一些与登录相关的文件和命令。通过它们可以快速的查看当前用户的登录情况和所有用户登录登出的历史记录,并且可以查询到用户使用 root 权限执行的操作。这对我们维护系统的安全和用户的管理都非常有帮助。

Ubuntu 中登录相关的日志的更多相关文章

  1. Linux系统登录相关

    whoami:查看当前用户 who:查看当前登录系统的所有用户 tty指的是主机的图形化界面的面板 pts/x指的是远程ssh连接的窗口 who -b:主机的上一次启动时间 w:显示已经登陆系统的用户 ...

  2. (转)ubuntu/var/log/下各个日志文件

    本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log   /var/log/alternatives.log-更新替代信息都记录在这个文件中 /var/log/ ...

  3. Ubuntu中LightDM是什么(转)

    LightDM(Light Display Manager)是一个全新的轻量级Linux桌面显示管理器,而传统的Ubuntu是使用GNOME桌面标准的GDM. LightDM是一个跨桌面显示管理器,其 ...

  4. ubuntu中LAMP环境搭建及ubuntu语言和输入法设置

    1.  LAMP 的安装 1) sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 2) 存放 ...

  5. Spark在Ubuntu中搭建开发环境

    一.在Windows7中安装Ubuntu双系统 工具/原料   windows7 64位 ubuntu 16.04 32位 UltraISO最新版(用来将镜像文件烤到U盘中) 空U盘(若有文件,请先备 ...

  6. ubuntu/var/log/下各个日志文件

    ubuntu/var/log/下各个日志文件 本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log   /var/log/alternatives.log-更新 ...

  7. ubuntu中启用ssh服务

    ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...

  8. ubuntu中的Wine详解

    什么是wine?(转自百度百科,具体看百科) wine,是一款优秀的Linux系统平台下的模拟器软件,用来将Windows系统下的软件在Linux系统下稳定运行,该软件更新频繁,日臻完善,可以运行许多 ...

  9. ubuntu如何开启root,如何启用Ubuntu中root帐号

    jingyan.baidu.com/article/495ba84116104238b20ede62.html ubuntu如何开启root,如何启用Ubuntu中root帐号 | 浏览:8344 | ...

随机推荐

  1. 201521123070 《JAVA程序设计》第1周学习总结

    本周学习总结 1.认识了三大平台Java SE.Java EE.Java ME. 2.认识了解了JDK,JVM与JRE,且熟悉JDK的操作并下载安装. 3.学会用博客写作业了. 书面作业 Q1.为什么 ...

  2. Android中显示和隐式Intent的使用

    显示启动activity                                                                                         ...

  3. 201521123033《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  4. Oracle与Mysql区别简述

    在Mysql中,一个用户下可以创建多个库: 而在Oracle中,Oracle服务器是由两部分组成 数据库实例[理解为对象,看不见的] 数据库[理解为类,看得见的] 一个数据库实例可拥有多个用户,一个用 ...

  5. 微信小程序--图片相关问题合辑

    图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.preview ...

  6. 反转字符串的几种实现(Java)

    反转字符串的几种实现(Java) 首先第一种是利用Java中的类库对象进行反转 //第一种 使用Java类库的diam实现反转 public String reverse(String str){ S ...

  7. CSS 入门基础

    一.CSS 介绍什么是CSS CSS 指的是层叠样式表(Cascading StyleSheet).在网页制作时采用层叠样式表技术, 可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控 ...

  8. 框架应用:Spring framework (一) - IoC技术

    IoC概念以及目标 IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合. IoC发展史 既然IoC的目标是为了松耦合,那它怎么做到的? 最后目标:降低对象之间的耦合度,IoC技术 ...

  9. 实例讲解webpack的基本使用第一篇

    更新文章不容易,尤其是更新高质量的文章更加不易,因此为了节约时间,闲话就不多说了.关于webpack的介绍,webpack是用来干嘛的,这些基础概念性的东西,就不在此赘述,下面直接开始正题. webp ...

  10. Java子线程中的异常处理(通用)

    在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...