Ubuntu 中登录相关的日志
登录相关的日志涉及到系统的安全,所以是系统管理中非常重要的一部分内容。本文试图对登录相关的日志做一个整理。
/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 中登录相关的日志的更多相关文章
- Linux系统登录相关
whoami:查看当前用户 who:查看当前登录系统的所有用户 tty指的是主机的图形化界面的面板 pts/x指的是远程ssh连接的窗口 who -b:主机的上一次启动时间 w:显示已经登陆系统的用户 ...
- (转)ubuntu/var/log/下各个日志文件
本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log /var/log/alternatives.log-更新替代信息都记录在这个文件中 /var/log/ ...
- Ubuntu中LightDM是什么(转)
LightDM(Light Display Manager)是一个全新的轻量级Linux桌面显示管理器,而传统的Ubuntu是使用GNOME桌面标准的GDM. LightDM是一个跨桌面显示管理器,其 ...
- ubuntu中LAMP环境搭建及ubuntu语言和输入法设置
1. LAMP 的安装 1) sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql 2) 存放 ...
- Spark在Ubuntu中搭建开发环境
一.在Windows7中安装Ubuntu双系统 工具/原料 windows7 64位 ubuntu 16.04 32位 UltraISO最新版(用来将镜像文件烤到U盘中) 空U盘(若有文件,请先备 ...
- ubuntu/var/log/下各个日志文件
ubuntu/var/log/下各个日志文件 本文简单介绍ubuntu/var/log/下各个日志文件,方便出现错误的时候查询相应的log /var/log/alternatives.log-更新 ...
- ubuntu中启用ssh服务
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...
- ubuntu中的Wine详解
什么是wine?(转自百度百科,具体看百科) wine,是一款优秀的Linux系统平台下的模拟器软件,用来将Windows系统下的软件在Linux系统下稳定运行,该软件更新频繁,日臻完善,可以运行许多 ...
- ubuntu如何开启root,如何启用Ubuntu中root帐号
jingyan.baidu.com/article/495ba84116104238b20ede62.html ubuntu如何开启root,如何启用Ubuntu中root帐号 | 浏览:8344 | ...
随机推荐
- 201521123065《java程序设计》第七周学习总结
1. 本周学习总结 1.Iterator迭代器用于遍历集合中的元素: 2.使用迭代器删除元素一定要先指向下一个元素在删除第一个元素: 3.List可以有重复对象: Set不能有重复对象: 4.Map是 ...
- 201521123110第二周Java学习总结
1.本章学习总结 本周的Java学习相对前一周更进了一步,初步学习了Java简单的输入和输出,String类的对象创建后不能修改,它是不可变的,在Java中浮点型默认是double型与C中的int型不 ...
- 201521123081《Java程序设计》 第1周学习总结
#1. 本周学习总结 ###JAVA是1995年SUN推出的一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能很优异的,多线程的,动态的语言.是世界上广 ...
- 201521123038 《Java程序设计》 第十一周学习总结
201521123038 <Java程序设计> 第十一周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多 ...
- Java程序设计——学生基本信息管理系统
1.团队课程设计博客链接 http://www.cnblogs.com/handsome321/p/7067121.html 2.个人负责模块说明 本组课题:学生信息管理系统 本人任务:插入.删除学生 ...
- Markdown例
一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...
- 201521123110 《Java程序设计》第1周学习总结
第一周学习总结 本周开始了对java的初次学习接触,Java是一门新的编程语言不同于C,由于有了c的基础,对于Java的理解和学习也相对从前学C更容易些. 也学习了Java的诞生发展以及运用包括JVN ...
- Activiti第一篇【介绍、配置开发环境、快速入门】
Activiti介绍 什么是Activiti? Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开 ...
- JVM菜鸟进阶高手之路一(一次与笨神,阿飞近距离接触修改JVM)
转载请注明原创出处,谢谢! 今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下 关于jstat命令详情可以参考:https ...
- angular-bootstrap ui-date组件问题总结
使用angular框架的时候,之前用的时间控件是引入My97DatePicker组件实现的,但是因为 1.My97DatePicker样式不太好看以及偶尔会出现底部被遮盖的情况.点击不可编辑input ...