Security
etc_security_lastlog 的視覺化
我正在尋找一種簡單的方法來視覺化來自 etc_security_lastlog 的數據,以查看非活動使用者 ID。“非活動”使用者將根據他們的 time_last_login 是否足夠大來確定。我該怎麼做?
lp: time_last_unsuccessful_login = 1174162435 tty_last_unsuccessful_login = /dev/pts/7 host_last_unsuccessful_login = 1x.xxx.xxx.x.x unsuccessful_login_count = 1 smtsftp: unsuccessful_login_count = 3 time_last_login = 1382043613 tty_last_login = /dev/ssh-16842912 host_last_login = 1x.xxx.xxx.x.x.net.intra time_last_unsuccessful_login = 1382083294 tty_last_unsuccessful_login = ssh host_last_unsuccessful_login = 1x.xxx.xxx.x.x.net.intra svcsinae: unsuccessful_login_count = 0 privil1: unsuccessful_login_count = 0 time_last_login = 1567112152 tty_last_login = /dev/pts/1 host_last_login = 11x.xxx.xxx.x.x time_last_unsuccessful_login = 1507892677 tty_last_unsuccessful_login = ssh host_last_unsuccessful_login = 1x.xxx.xxx.x.x
您可以使用簡單的 awk 過濾器來解決此問題;只需傳入目前時間戳和您感興趣的截止時間。它將解析輸入以查找使用者名及其 time_last_login 值。如果它發現一個早於截止值的值,它會報告相應的使用者。
下面的範例使用 1 年(31,536,000 秒)的粗略近似值。
awk -v now=$(date +%s) -v cutoff=31536000 ' /^[^-+@~ ][^:"#,=\\\/?` ]+:$/ { user=$1 sub(/:$/, "", user) } /time_last_login = [[:digit:]]+/ { if (now - $3 > cutoff) print user " has not logged in within the cutoff" } ' /etc/security/lastlog
我在搜尋使用者名時使用的正則表達式來自mkuser 文件。擷取使用者名(行)後,我從使用者名中刪除了尾隨冒號。