根據systemd
文檔,journalctl
建議瀏覽日誌,而不是/var/log/*
文件樹。
儘管man 1 journalctl
描述瞭如何使用它,我仍然不知道它需要什麼參數才能給我我想要的東西的清單。例如,我想查看使用者登入的清單。我意識到sshd
處理 ssh 登入,但是本地登入和一般用戶身份驗證呢?
這是我嘗試過的:
#shows all logs. huge
journalctl
#limit history and search for "login"
journalctl --since "yesterday" | grep login
#a week ago rather than just a day
journalctl --since `date +"%Y-%m-%d" --date "last week"` | grep login
... systemd-logind[678]: New session 81 of user jozxyqk.
這似乎給了一些指示,但絕對不是最可靠的方法。正確的方法是什麼?
答案1
跑步:
journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
解釋:
假設您正在執行審計子系統(除非您停用它,否則您會這樣做),這是獲取此類資訊的最佳方式,因為除其他外,如果您使用_TRANSPORT=audit
,訊息就不能像傳統syslog 套接字上的消息那樣被欺騙。查看全部透過此傳輸發送的訊息中,使用journalctl -q _TRANSPORT=audit
. (-q 可以排除煩人的-- Reboot --
行。)
若要以詳細形式查看這些內容,請執行journalctl -q _TRANSPORT=audit -o verbose
。實際上,我建議您在繼續操作時立即停止並執行此操作,因為我們要做的下一件事是過濾我們在那裡看到的一些欄位。這是我的系統中的記錄:
_BOOT_ID=[redacted]
_MACHINE_ID=[redacted]
_HOSTNAME=[redacted]
_UID=0
_TRANSPORT=audit
SYSLOG_FACILITY=4
SYSLOG_IDENTIFIER=audit
AUDIT_FIELD_HOSTNAME=?
AUDIT_FIELD_ADDR=?
AUDIT_FIELD_RES=success
_AUDIT_LOGINUID=18281
_AUDIT_TYPE=1112
AUDIT_FIELD_OP=login
AUDIT_FIELD_ID=18281
_PID=5398
_SELINUX_CONTEXT=system_u:system_r:local_login_t:s0-s0:c0.c1023
AUDIT_FIELD_EXE=/usr/bin/login
AUDIT_FIELD_TERMINAL=tty6
_AUDIT_SESSION=541
_SOURCE_REALTIME_TIMESTAMP=1480529473269000
_AUDIT_ID=7444
MESSAGE=USER_LOGIN pid=5398 uid=0 auid=18281 ses=541 subj=system_u:system_r:local_login_t:s0-s0:c0.c1023 msg='op=login id=18281 exe="/usr/bin/login" hostname=? addr=? terminal=tty6 res=success'
底部MESSAGE
是非結構化日誌記錄,基本上就是您在非詳細系統日誌樣式輸出中看到的內容。我們可以grep for MESSAGE=USER_LOGIN
(並立即完成),但日誌讓我們可以做更多很酷的事情,所以讓我們繼續下去。
每個審核訊息類型都有一個關聯的_AUDIT_TYPE
(想像一下!)。由於某種原因,這不能有效地轉換為結構化輸出中的文本,但1112
對應於USER_LOGIN
.我透過簽入確認了這一點libaudit.h
,其中有(帶有一些上下文行):
#define AUDIT_USER_CHAUTHTOK 1108 /* User acct password or pin changed */
#define AUDIT_USER_ERR 1109 /* User acct state error */
#define AUDIT_CRED_REFR 1110 /* User credential refreshed */
#define AUDIT_USYS_CONFIG 1111 /* User space system config change */
#define AUDIT_USER_LOGIN 1112 /* User has logged in */
#define AUDIT_USER_LOGOUT 1113 /* User has logged out */
#define AUDIT_ADD_USER 1114 /* User account added */
#define AUDIT_DEL_USER 1115 /* User account deleted */
所以,journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
這就是你所需要的。它獲取 ssh、終端機和 GUI 登入信息,並記錄成功和失敗。請注意,它不捕捉諸如sudo
或 之類的東西su
——這些東西有不同的審計記錄。
即使輸出的“短”版本也有點冗長,因此您可能需要使用-o json
並創建一個短腳本將輸出解析為漂亮的格式。
答案2
journalctl -q SYSLOG_FACILITY=10 SYSLOG_FACILITY=4
這告訴日誌過濾掉來自兩個不同設施的訊息。 10 號為authpriv
,4 號為auth
。 ssh 以及許多其他登入敏感應用程式使用這兩個工具來登入。
答案3
您想要登入或嘗試登入嗎?
這顯示了登入訊息,但是不嘗試(以今天為例)並在 Fedora 22 中運行:
$ journalctl -u 'systemd-logind' --since "today" --until "tomorrow"
這是範例輸出:
-- Logs begin at Mon 2014-09-01 03:10:03 BST, end at Fri 2015-11-20 09:55:02 GMT. -- Nov 20 08:47:15 meow systemd[1]: Starting Login Service... Nov 20 08:47:15 meow systemd-logind[699]: New seat seat0. Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event2 (Power Button) Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event0 (Power Button) Nov 20 08:47:15 meow systemd-logind[699]: Watching system buttons on /dev/input/event1 (Lid Switch) Nov 20 08:47:15 meow systemd[1]: Started Login Service. Nov 20 08:47:37 meow systemd-logind[699]: New session c1 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: New session c2 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c1. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c2. Nov 20 08:47:46 meow systemd-logind[699]: New session c3 of user gdm. Nov 20 08:51:22 meow systemd-logind[699]: New session 1 of user david1.
它混雜著其他訊息,例如蓋子和電源按鈕,因此您可以 grep 以session
獲得更精確的資訊:
$ journalctl -u 'systemd-logind' --since "today" --until "tomorrow" | grep session Nov 20 08:47:37 meow systemd-logind[699]: New session c1 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: New session c2 of user gdm. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c1. Nov 20 08:47:46 meow systemd-logind[699]: Removed session c2. Nov 20 08:47:46 meow systemd-logind[699]: New session c3 of user gdm. Nov 20 08:51:22 meow systemd-logind[699]: New session 1 of user david1.