UNIX系OS ( Mac / Linux / FreeBSD )のシェルコマンドに関する各種メモ書き

last , lastb , utmpdump コマンド

  • last:/var/log/wtmp からログイン・ログアウトの履歴を表示する
  • lastb:/var/log/btmp からログイン失敗の履歴を表示する(root権限が必要)
  • utmpdump:バイナリ形式の utmp / wtmp / btmp をテキストに変換する

last

last                  # 全履歴
last ecos             # 特定ユーザーのみ
last -n 10            # 直近10件
last reboot           # 再起動履歴
last -x               # シャットダウンやランレベル変更も含める
last -F               # ログイン・ログアウト時刻を年や秒まで表示
last -i               # ホスト名ではなくIPアドレスで表示
last -s yesterday -t today   # 期間を指定(since / until)
last -f /var/log/wtmp.1      # ローテート済みなど別ファイルを読む

utmpdump

utmp、wtmp、btmp はバイナリ形式のため、cat で中身を読めません。utmpdump はこれらをテキストに変換して表示するコマンドです。

utmpdump /var/log/wtmp            # テキストで表示
utmpdump /var/run/utmp            # 現在のログイン状態
sudo utmpdump /var/log/btmp       # ログイン失敗の記録
utmpdump /var/log/wtmp > wtmp.txt # テキストに保存
utmpdump -r < wtmp.txt > wtmp.new # テキストをバイナリに戻す

last では表示されない生のレコード(PID、レコード種別、端末IDなど)を確認できます。このため、壊れた wtmp の調査やフォレンジックに使われます。-r を使うとテキストで編集した内容を書き戻せますが、ログの改ざんにも使える機能なので扱いには注意が必要です。

補足(確実性はやや低め)

wtmp には 2038年問題があるため、一部の新しいディストリビューションは wtmpdb という SQLite ベースの仕組みに移行しつつあります。

No.2777
11/04 08:35

edit