在 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