登录相关的日志涉及到系统的安全,所以是系统管理中非常重要的一部分内容。本文试图对登录相关的日志做一个整理。 /var/log/auth.log这是一个文本文件,记录了所有和用户认证相关的日志。无论是我们通过 ssh 登录,还是通过 sudo 执行命令都会在 auth.log 中产生记录。执行 $ ssh nick@myserver
上图显示日志记录了通过秘钥认证的方式登录主机并退出的过程。 再执行下面的命令试试: $ sudo vim /var/log/auth.log
日志同样会详细的记录本次 sudo 操作的过程。从中我们可以看到是哪个用户通过 sudo 执行了什么命令! /var/run/utmp这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。 /var/log/wtmp这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。 /var/log/btmp这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。 $ sudo last -f /var/log/btmp
/var/log/lastlog这是一个二进制文件,所以不能直接通过文本编辑器查看其内容。
其实这个文件的主要使用者是 lastlog 命令。 特别是 /var/run/utmp、/var/log/wtmp 和 /var/log/lastlog 这三个文件,它们都是日志系统中的关键文件,并且具有如下的逻辑联系: 我们可以看到除了 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.1
如果我们想快速知道系统最后一次的重启时间,可以使用下面的命令: $ last reboot
who 命令who 命令通过查询 /var/run/utmp 文件来显式系统中当前登录的每个用户。默认的输出包括用户名、终端类型、登录日期及远程主机:
w 命令如果能够查询到当前登录系统的用户都在干什么是不是一件令人很兴奋的事情呢!使用 w 命令就可以做到: $ w
我们可以看到用户 nick 同时登录了两个终端,在其中一个终端中执行了 w 命令,而在另一个终端中正通过 vim 编辑 /etc/passwd 文件! users 命令users 命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示多次:
因为 nick 通过三个终端登录了主机,所以在同一行中名字出现了三次。 总结本文整理了 Ubuntu 系统中常见的一些与登录相关的文件和命令。通过它们可以快速的查看当前用户的登录情况和所有用户登录登出的历史记录,并且可以查询到用户使用 root 权限执行的操作。这对我们维护系统的安全和用户的管理都非常有帮助。 |
|