在 linux 中有 5 个用于审计的命令 :
* last : 这个命令可用于检视我么你系统的成功登入、关机、重启等情况; 这个命令就是将
/var/log/wtmp 档案格式化输出;
* lastb : 这个命令用于检视登入失败的情况; 这个命令将/var/log/btmp 档案格式化输出;
* lastlog : 这个命令用于检视使用者上一次登入情况; 这个命令将/var/log/lastlog 档案格式化输
出;
* who : 这个命令使用者检视当前登入系统的情况; 这个命令就是将/var/log/utmp 档案格式化
输出;
* w : 与 who 命令一致;
 
 
<1>last 命令
语    法 :  last [-adRx][-f <记录档案>][-n <显示列数>][账号名称…][终端机编号…]
功能说明 :  列出目前与过去登入系统的使用者相关资讯;
补充说明 :  单独执行 last 指令, 它会读取位于/var/log/wtmp 档案, 并把该档案记录的登入系统的使用者名称单全部显示出来;
参    数 :
-a   把从何处登入系统的 WordPress 主机名称或 IP 地址, 显示在最后一行;
-d   将 IP 地址转换成 WordPress 主机名称;
-f <记录档案>  指定记录档案;
-n <显示列数>或-<显示列数>  设定列出名单的显示列数;
-R   不显示登入系统的 WordPress 主机名或 IP 地址;
-x   显示系统关机、重新开机、以及执行等级的改变等资讯;
 
案例 :
(1)last 预设显示 wtmp 的记录, 若想通过 last 命令显示 btmp 档案内容呢?
命令 : last -f /var/log/btmp
 
(2) 可能 wtmp 储存的资料过多, 对于查询比较费力, 我们可以尝试只列出最新的 5 列名单?
这里我们可能想到的是:
命令 : last -n 5(n 与 5 之间有无空格一样) 或者 last -5
但是 wtmp 是从上往下写入资料的, 这样显示的就并非最新资料了.
利用 tail 命令呢?
命令 : last | tail -7
注:观察过 wtmp 档案的会发现 wtmp 结尾有一行档案描述和一行空格.”tail -7” 这样反而实现列出我们需要的最新 5 列名单.
 
(3) 显示特定使用者的登入情况或针对不同的情况 (reboot/shutdown) 进行检视
命令 : last -n 5 root    //显示 root 使用者的登入情况的前五列
命令 : last -x reboot/shutdown   //只列出重启/关机的情况
 
<2>lastb 命令
语    法 :  last [-adRx][-f <记录档案>][-n <显示列数>][账号名称…][终端机编号…]
功能说明 :  列出目前与过去登入系统失败的使用者相关资讯;
补充说明 :  单独执行 last 指令, 它会读取位于/var/log/btmp 档案, 并把该档案记录的登入系统失败的使用者名称单全部显示出来;
参    数 :
-a   把从何处登入系统的 WordPress 主机名称或 IP 地址, 显示在最后一行;
-d   将 IP 地址转换成 WordPress 主机名称;
-f <记录档案>  指定记录档案;
-n <显示列数>或-<显示列数>  设定列出名单的显示列数;
-R   不显示登入系统的 WordPress 主机名或 IP 地址;
-x   显示系统关机、重新开机、以及执行等级的改变等资讯;
 
注 : lastb 功能基本跟 last 是一样的, 只是两个命令预设读取的档案不同, 一个为 btmp, 一个为 wtmp.
 
<3>lastlog 命令
语    法 :  lastlog
功能说明 :  检查某特定使用者上次登入的时间
参    数 :
-b <天数>  显示指定天数前的登陆资讯;
-h   显示帮助资讯;
-t <天数>  显示指定天数以来的登入资讯;
-u <使用者名称>  显示指定使用者的最近登入资讯;
 
<4>who 、 w 命令
检视当前登入系统的情况
[root@sqj ~]# who
root     pts/0   2016-08-06 23:38 (XX.XX.XX.XX)
[root@sqj ~]# w
06:29:11 up 3 days, 16:26,  1 user,  load average: 0.00, 0.00, 0.00
USER  TTY    FROM        LOGIN@   IDLE   JCPU   PCPU WHAT
root   pts/0  XX.XX.XX.XX   23:38    0.00s  0.29s  0.00s w