Linux用戶登錄記錄日志和相關查看命令匯總(轉)


# 1 utmp、wtmp、btmp文件

Linux用戶登錄信息放在三個文件中:

1  /var/run/utmp:記錄當前正在登錄系統的用戶信息,默認由who和w記錄當前登錄用戶的信息,uptime記錄系統啟動時間;

2  /var/log/wtmp:記錄當前正在登錄和歷史登錄系統的用戶信息,默認由last命令查看;

3  /var/log/btmp:記錄失敗的登錄嘗試信息,默認由lastb命令查看。

這三個文件都是二進制數據文件,並且三個文件結構完全相同,是由/usr/include/bits/utmp.h文件定義了這三個文件的結構體。

默認情況下文件的日志信息會通過logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此處是logrotate的缺省設置,通常不需要對它進行修改。日志文件的輪循壓縮等設置存放在獨立的配置文件中,它(們)放在/etc/logrotate.d/目錄下,它會覆蓋缺省設置。

如果不想記錄相關信息,則可以直接將相關文件刪除即可。如果系統不存在該文件,則需要在此路徑touch一個文件就可以繼續記錄相關信息了。

此外:

如果想禁用who命令,則只需要將utmp的可讀權限去掉就行,這樣非root用戶就不能用此命令了;如果是btmp文件,手工創建的話注意權限必須為600,否則不能正確寫入信息。 

# 2 相關命令介紹

好了,下面開始介紹查看這三個日志文件的命令了。分別是lastlog、last、lastb、ac、who、w、users、utmpdump。

其中last、lastb、who、utmpdump可以通過指定參數而查看三個中的任意一個文件。

 

## 2.1 lastlog:

列出所有用戶最近登錄的信息,或者指定用戶的最近登錄信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login time

復制代碼
lzx-clone1:/var/log # lastlog
Username                Port     Latest
root                pts/1    Wed Oct 19 14:37:46 +0800 2016
bin                          **Never logged in**
daemon                       **Never logged in**
gdm                          **Never logged in**
admin                        **Never logged in**
lzx                 pts/3    Wed Oct 19 15:15:24 +0800 2016
復制代碼

## 2.2 last

列出當前和曾經登入系統的用戶信息,它默認讀取的是/var/log/wtmp文件的信息。輸出的內容包括:用戶名、終端位置、登錄源信息、開始時間、結束時間、持續時間。注意最后一行輸出的是wtmp文件起始記錄的時間。當然也可以通過last -f參數指定讀取文件,可以是/var/log/btmp、/var/run/utmp

復制代碼
[root@CLMUGR-APP-D-01 log]# last

root     pts/0        10.200.108.92    Tue Oct 18 15:04   still logged in  

root     pts/1        10.200.108.92    Wed Oct 12 17:02   still logged in  

root     pts/0        10.200.108.92    Wed Oct 12 09:20 - 16:58  (07:38)   

root     pts/0        10.200.108.92    Sat Oct  8 10:40 - 14:45  (04:05)   

root     pts/0        10.200.108.92    Wed Aug 31 10:52 - 08:44  (21:52)   

root     pts/0        10.200.108.92    Fri Jul  8 13:08 - 09:41 (25+20:32)

reboot   system boot  2.6.32-431.el6.x Tue Jan 13 19:40 - 19:44  (00:04) 
 

wtmp begins Tue Jan 13 19:40:22 2015 
復制代碼

## 2.3 lastb

列出失敗嘗試的登錄信息,和last命令功能完全相同,只不過它默認讀取的是/var/log/btmp文件的信息。當然也可以通過last -f參數指定讀取文件,可以是/var/log/btmp、/var/run/utmp

復制代碼
[root@CLMUGR-APP-D-01 log]# lastb

root     ssh:notty    10.200.108.92    Wed Oct 19 17:11 - 17:11  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:11 - 17:11  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:10 - 17:10  (00:00)   

root     ssh:notty    10.200.108.92    Wed Oct 19 17:10 - 17:10  (00:00)   
 

btmp begins Wed Oct 19 17:10:12 2016
復制代碼
lzx-clone1:/var/log # lastb -F -f /var/log/wtmp
root     pts/0        10.200.108.92    Tue Mar  8 11:04:36 2016 - Tue Mar  8 11:04:36 2016  (00:00)    

wtmp begins Tue Mar  8 11:04:36 2016

## 2.4 ac

輸出所有用戶總的連接時間,默認單位是小時。由於ac是基於wtmp統計的,所以修改或者刪除wtmp文件都會使ac的結果受影響。(Suse默認沒有該命令)

[root@cloudexpress ~]# ac

         total     7404.62 

## 2.5 who

查看當前登入系統的用戶信息。其中who -m等效於who am i。

語法who [OPTION]... [ FILE | ARG1 ARG2 ]。

who命令強大的一點是,它既可以讀取utmp文件也可以讀取wtmp文件,默認沒有指定FILE參數時,who查詢的是utmp的內容。當然可以指定FILE參數,比如who -aH /var/log/wtmp,則此時查看的是wtmp文件。

查看當前運行級別

[root@CLMUGR-APP-D-01 log]# who -rH

名稱   線路       時間           空閑  進程號 備注

         運行級別 5 2016-07-08 13:01

查看登錄用戶和用戶數≈users

lzx-clone1:/var/run # who -q

root root root root

# users=4

## 2.6 w

查看當前登入系統的用戶信息及用戶當前的進程(而who命令只能看用戶不能看進程)。該命令能查看的信息包括字系統當前時間,系統運行時間,登陸系統用戶總數及系統1、5、10分鍾內的平均負載信息。后面的信息是用戶,終端,登錄源,login time,idle time,JCPU,PCPU,當前執行的進程等。

w的信息來自兩個文件:用戶登錄信息來自/var/run/utmp,進程信息來自/proc/.

復制代碼
lzx-clone1:/var/log # w
 15:26:40 up 12 days, 56 min,  4 users,  load average: 0.14, 0.16, 0.20
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0        10Oct16 ?xdm?  43:33   0.69s /usr/bin/gnome-session
root     pts/0     Wed14   40.00s  0.19s  0.00s w
root     pts/1     Wed14   23:01m  0.06s  0.06s -bash
root     pts/2     10Oct16  9days  0.01s  0.01s /bin/bash -l
復制代碼

## 2.7 users

顯示當前正在登入統的用戶名。語法是users [OPTION]... [FILE]。如果未指定FILE參數則默認讀取的是/var/run/utmp,當然也可以指定通用相關文件/var/log/wtmp,此時輸出的就不是當前用戶了。

[root@CLMUGR-APP-D-01 log]# users

root root

## 2.8 utmpdump

utmpdump用於轉儲二進制日志文件到文本格式的文件以便查看,同時也可以修改二進制文件!!包括/var/run/utmp、/var/log/wtmp、/var/log/btmp。語法為:utmpdump [options] [filename]。修改文件實際就可以抹除系統記錄,所以一定要設置好權限,防止非法入侵。

例子:修改utmp或wtmp。由於這些都是二進制日志文件,你不能像編輯文件一樣來編輯它們。取而代之是,你可以將其內容輸出成為文本格式,並修改文本輸出內容,然后將修改后的內容導入回二進制日志中。如下: 

utmpdump /var/log/utmp > tmp_output.txt          #導出文件信息

                                                 #<使用文本編輯器修改 tmp_output.txt>

utmpdump -r tmp_output.txt > /var/log/utmp       #導入到源文件中

 

參考:

使用utmpdump 監控 CentOS 用戶登錄歷史

Linux man utmpdump

 

http://www.cnblogs.com/lizhaoxian/p/5981029.html

https://blog.csdn.net/jsd2honey/article/details/78404337


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM