【Linux】ログイン履歴を確認する(last・lastlog・lastb)

【Linux】ログイン履歴を確認する(last・lastlog・lastb)

PR Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:4,644

Linuxのログイン履歴を確認する方法を解説します。lastコマンドでログイン・ログアウトの全履歴、lastlogで全ユーザーの最終ログイン、lastbでログイン失敗履歴を確認できます。各コマンドの使い方やオプション、参照するログファイルの違いまで実行例付きで紹介します。

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

初心者向け

わかばちゃんと学ぶ サーバー監視

難易度
実用性
読みやすさ

マンガと図解が中心で圧倒的に読みやすい。負荷調査の手法がスッと理解できるようになります。

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ

LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルサーバーの運用では、「誰が」「いつ」ログインしたかを確認する場面が頻繁にあります。不正アクセスの調査、障害発生時の原因切り分け、セキュリティ監査など、ログイン履歴の確認はサーバー管理者にとって必須のスキルです。

本記事では、Linuxでログイン履歴を確認するための3つのコマンド(lastlastloglastb)について、使い方・オプション・参照するログファイルの違いまで実行例を交えて解説します。

記事のポイント

  • lastコマンドでログイン・ログアウトの全履歴を確認できる /var/log/wtmpを参照し、過去のログイン・ログアウト・再起動の履歴を時系列で表示する。

  • lastlogコマンドで全ユーザーの最終ログイン日時を一覧表示できる /var/log/lastlogを参照し、各ユーザーが最後にログインした日時を一覧で確認する。

  • lastbコマンドでログイン失敗の履歴を確認できる /var/log/btmpを参照し、ログインに失敗した履歴を表示する。不正アクセスの調査に活用できる。

  • 目的に応じて3つのコマンドを使い分けることが重要 ログイン全履歴はlast、最終ログインはlastlog、失敗履歴はlastbと、目的に応じたコマンドの選択が必要。

ログイン履歴を確認するコマンドの一覧

Linuxでログイン履歴を確認するコマンドは、主に以下の3つです。

コマンド表示内容参照ファイル権限
lastログイン・ログアウトの全履歴/var/log/wtmp一般ユーザー
lastlog全ユーザーの最終ログイン日時/var/log/lastlog一般ユーザー
lastbログイン失敗の履歴/var/log/btmp通常はroot権限が必要

これらのコマンドは、バイナリ形式のログファイルを読み取って表示する専用ツールです。catlessでは読み取れないため、必ず上記のコマンドを使用してください。

[!NOTE] 上記の権限はログファイルのパーミッションに依存します。lastlastlogは多くのディストリビューションで一般ユーザーでも実行できますが、環境やセキュリティポリシーによってはパーミッションが変更されていて、一般ユーザーでは実行できない場合もあります。

lastコマンド:ログイン・ログアウトの全履歴を確認する

lastコマンドは、システムへのログイン・ログアウト・再起動の履歴を新しい順に表示します。サーバー管理において最もよく使うログイン履歴確認コマンドです。

lastコマンドの基本的な使い方

引数なしで実行すると、すべてのログイン履歴を表示します。

実行コマンド
last
実行結果
testuser pts/0 192.168.1.10 Mon Aug 12 09:00 still logged in
testuser pts/0 192.168.1.10 Sun Aug 11 18:30 - 19:45 (01:15)
root pts/1 192.168.1.20 Sun Aug 11 14:00 - 15:30 (01:30)
appuser pts/0 192.168.1.10 Sat Aug 10 10:00 - 12:00 (02:00)
reboot system boot 5.15.0-generic Sat Aug 10 09:55 still running
wtmp begins Sat Aug 10 09:55:00 2026

出力の各列の意味は以下の通りです。

意味
1列目ユーザー名(rebootはシステム再起動)
2列目端末名(pts/0はSSHSSH [エスエスエイチ]Secure Shell。暗号化されたリモート接続プロトコル接続など)
3列目接続元のIPIP [アイピー]Internet Protocol。インターネット通信の基本プロトコルアドレスまたはホスト名
4列目以降ログイン日時 - ログアウト日時(セッション時間)

still logged inは現在もログイン中であることを示しています。

表示件数を制限する(-nオプション)

履歴が多い場合は、-nオプションで表示件数を制限できます。

実行コマンド
last -n 5

直近5件のログイン履歴のみ表示されます。-nの代わりに数値だけを指定することもできます(last -5)。

特定のユーザーのログイン履歴を確認する

引数にユーザー名を指定すると、そのユーザーのログイン履歴のみを表示します。

実行コマンド
last testuser
実行結果
testuser pts/0 192.168.1.10 Mon Aug 12 09:00 still logged in
testuser pts/0 192.168.1.10 Sun Aug 11 18:30 - 19:45 (01:15)
wtmp begins Sat Aug 10 09:55:00 2026

IPアドレスをホスト名に変換せず表示する(-iオプション)

-iオプションを使うと、接続元のホスト名をIPアドレスで表示します。ホスト名の逆引き(DNSDNS [ディーエヌエス]Domain Name System。インターネット上のドメイン名とIPアドレスを紐付けて管理・変換するシステム解決)をスキップするため、表示速度も向上します。

実行コマンド
last -i

システムの再起動履歴を確認する

rebootを引数に指定すると、システムの再起動履歴のみを表示できます。

実行コマンド
last reboot
実行結果
reboot system boot 5.15.0-generic Sat Aug 10 09:55 still running
reboot system boot 5.15.0-generic Fri Aug 2 14:30 - 09:55 (7+19:25)
wtmp begins Fri Aug 2 14:30:00 2026

サーバーの再起動回数やタイミングを確認したい場合に活用できます。

日時をフルフォーマット(年を含む形式)で表示する(-Fオプション)

-Fオプションを使うと、ログイン・ログアウトの日時を年月日を含む完全な形式で表示します。

実行コマンド
last -F -n 3
実行結果
testuser pts/0 192.168.1.10 Mon Aug 12 09:00:15 2026 still logged in
testuser pts/0 192.168.1.10 Sun Aug 11 18:30:42 2026 - Sun Aug 11 19:45:10 2026 (01:14)
root pts/1 192.168.1.20 Sun Aug 11 14:00:05 2026 - Sun Aug 11 15:30:22 2026 (01:30)

年が省略されないため、年をまたいだ調査を行う際に特に便利です。

なお、厳密なISO 8601形式(YYYY-MM-DDThh:mm:ss+TZ)で出力したい場合は、--time-format=isoを使用します。

実行コマンド
last --time-format=iso -n 3

lastコマンドの主なオプション一覧

オプション説明
-n 件数表示件数を制限する
-F日時をフルフォーマット(年を含む)で表示する
-iホスト名の代わりにIPアドレスで表示する
-xシャットダウンやランレベルの変更も表示する
-f ファイル読み込むwtmpファイルを指定する
-Rホスト名の列を非表示にする
-s 日時 / --since指定した日時以降のログイン履歴を表示する
-t 日時 / --until指定した日時以前のログイン履歴を表示する
-p 日時 / --present指定した日時にログインしていたユーザーを表示する

[!NOTE] -s--since)、-t--until)、-p--present)はutil-linux版の比較的新しいバージョンで追加されたオプションです。古いRHEL/CentOSCentOS [セントオーエス]Red Hat Enterprise Linux互換の安定したLinuxディストリビューション系や組み込み系Linuxなど、util-linuxのバージョンが古い環境では利用できない場合があります。last -Vでバージョンを確認してください。

lastlogコマンド:全ユーザーの最終ログインを確認する

lastlogコマンドは、システムに登録されている全ユーザーの最終ログイン日時を一覧表示します。ログインしたことがないユーザーは「Never logged in」と表示されます。

lastlogコマンドの基本的な使い方

実行コマンド
lastlog
実行結果
Username Port From Latest
root pts/1 192.168.1.20 Sun Aug 11 14:00:05 +0900 2026
daemon **Never logged in**
bin **Never logged in**
sys **Never logged in**
testuser pts/0 192.168.1.10 Mon Aug 12 09:00:15 +0900 2026
appuser pts/0 192.168.1.10 Sat Aug 10 10:00:00 +0900 2026

システムアカウント(daemonbinsysなど)は通常ログインしないため「Never logged in」と表示されます。

特定のユーザーの最終ログインを確認する(-uオプション)

-uオプションにユーザー名を指定すると、そのユーザーの最終ログイン情報のみを表示します。

実行コマンド
lastlog -u testuser
実行結果
Username Port From Latest
testuser pts/0 192.168.1.10 Mon Aug 12 09:00:15 +0900 2026

一定期間ログインしていないユーザーを確認する(-bオプション)

-bオプションに日数を指定すると、その日数以上ログインしていないユーザーを一覧表示します。セキュリティ監査で不要アカウントの洗い出しに活用できます。

実行コマンド
lastlog -b 90

90日以上ログインしていないユーザーのみが表示されます。

最近ログインしたユーザーを確認する(-tオプション)

-tオプションに日数を指定すると、その日数以内にログインしたユーザーのみを表示します。

実行コマンド
lastlog -t 7

直近7日以内にログインしたユーザーのみが表示されます。

lastlogコマンドの主なオプション一覧

オプション説明
-u ユーザー名特定のユーザーの最終ログイン情報を表示する
-b 日数指定日数以上ログインしていないユーザーを表示する
-t 日数指定日数以内にログインしたユーザーを表示する

lastbコマンド:ログイン失敗の履歴を確認する

lastbコマンドは、ログインに失敗した履歴を表示します。不正アクセスの検知やブルートフォース攻撃の調査に活用できます。

[!WARNING] lastbコマンドが参照する/var/log/btmpは、通常-rw-rw---- root:utmpのパーミッションで設定されています。そのため、一般ユーザーで実行すると権限エラーになります。sudoを付けて実行するか、utmpグループに所属するユーザーで実行してください。

lastbコマンドの基本的な使い方

実行コマンド
sudo lastb
実行結果
admin ssh:notty 203.0.113.50 Mon Aug 12 03:15 - 03:15 (00:00)
root ssh:notty 203.0.113.50 Mon Aug 12 03:14 - 03:14 (00:00)
test ssh:notty 198.51.100.25 Mon Aug 12 02:30 - 02:30 (00:00)
root ssh:notty 198.51.100.25 Mon Aug 12 02:29 - 02:29 (00:00)
btmp begins Mon Aug 12 02:29:00 2026

ssh:nottyと表示されている場合は、SSH経由でのログイン試行が失敗したことを示します。同一IPアドレスから短時間に大量の失敗履歴がある場合、ブルートフォース攻撃の可能性があります。

表示件数を制限する

lastコマンドと同様に、-nオプションで表示件数を制限できます。

実行コマンド
sudo lastb -n 10

特定のユーザーの失敗履歴を確認する

引数にユーザー名を指定すると、そのユーザーの失敗履歴のみを表示します。

実行コマンド
sudo lastb root

rootユーザーへのログイン失敗回数が多い場合は、外部からの攻撃を受けている可能性があります。

ログイン履歴に関するログファイル

lastlastloglastbの各コマンドは、以下のバイナリログファイルを参照しています。

ファイル内容参照コマンド
/var/log/wtmpログイン・ログアウト・再起動の全履歴last
/var/log/lastlog全ユーザーの最終ログイン日時lastlog
/var/log/btmpログイン失敗の履歴lastb

バイナリファイルのためcatやlessでは閲覧できない

これらのログファイルはバイナリ形式で保存されています。catlessで開いても文字化けした内容が表示されるだけで、正しく読み取ることはできません。

catで開いた場合(文字化けする)
cat /var/log/wtmp

必ずlastlastloglastbの専用コマンドを使用してください。

ログファイルのローテーション

/var/log/wtmpは、ログローテーション(logrotate)によって定期的にアーカイブされる場合があります。過去の履歴を確認したい場合は、-fオプションでアーカイブファイルを指定します。

実行コマンド
last -f /var/log/wtmp.1

ディストリビューションの設定により、ローテーションの頻度や保存世代数が異なるため、必要に応じて/etc/logrotate.conf/etc/logrotate.d/を確認してください。

現在ログイン中のユーザーを確認する方法

過去の履歴ではなく、現在ログイン中のユーザーを確認したい場合はwhoコマンドやwコマンドを使用します。

whoコマンド

実行コマンド
who
実行結果
testuser pts/0 2026-08-12 09:00 (192.168.1.10)
root pts/1 2026-08-12 09:15 (192.168.1.20)

現在ログインしているユーザー名、端末、ログイン日時、接続元が表示されます。

wコマンド

実行コマンド
w
実行結果
09:30:00 up 1 day, 23:35, 2 users, load average: 0.15, 0.10, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
testuser pts/0 192.168.1.10 09:00 0.00s 0.05s 0.00s w
root pts/1 192.168.1.20 09:15 5:00 0.02s 0.02s -bash

wコマンドはwhoよりも詳細な情報を表示し、各ユーザーが現在実行しているコマンドやアイドル時間まで確認できます。

実務でのログイン履歴の活用例

セキュリティ監査:不正アクセスの調査

不正アクセスが疑われる場合、lastblastを組み合わせて調査を行います。

調査手順の例
# 1. ログイン失敗の履歴を確認(不正な試行がないか)
sudo lastb -n 20
# 2. 特定のIPからのログイン成功を確認
last -i | grep "203.0.113.50"
# 3. rootユーザーへのログイン履歴を確認
last root

アカウント棚卸し:未使用アカウントの洗い出し

定期的なセキュリティ点検として、長期間使われていないアカウントを洗い出す際にlastlogが有効です。

実行コマンド
# 180日以上ログインしていないユーザーを一覧表示
lastlog -b 180

不要なアカウントが見つかった場合は、アカウントのロック(usermod -L)や削除(userdel)を検討します。

【Linux】userdelコマンドでユーザを削除する
ITナレッジライフ

【Linux】userdelコマンドでユーザを削除する

Linuxでユーザ削除をする際はroot権限でuserdelコマンドを実行します。ホーム・ディレクトリとメールスプールを含めて削除する場合は、-rオプションを指定します。

障害対応:作業証跡の確認

障害発生時に、どのユーザーがいつサーバーにログインして作業を行ったかを確認できます。

実行コマンド
# 特定の日時以降のログイン履歴を確認
last -F | head -20

コマンドの実行履歴もあわせて確認したい場合は、historyコマンドも活用しましょう。

【Linux】historyコマンドで実行日時(時間)を表示する方法
ITナレッジライフ

【Linux】historyコマンドで実行日時(時間)を表示する方法

Linuxのhistoryコマンドでコマンドの実行日時(時間)を表示する方法を解説します。HISTTIMEFORMAT変数の設定方法や、永続化する手順をわかりやすく紹介します。

まとめ

Linuxでログイン履歴を確認するには、目的に応じてlastlastloglastbの3つのコマンドを使い分けます。

目的使用コマンド
ログイン・ログアウトの全履歴を確認したいlast
全ユーザーの最終ログイン日時を確認したいlastlog
ログイン失敗の履歴を確認したいsudo lastb
現在ログイン中のユーザーを確認したいwho または w

これらのコマンドはバイナリ形式のログファイル(/var/log/wtmp/var/log/lastlog/var/log/btmp)を参照するため、catlessではなく専用コマンドで確認してください。セキュリティ監査や障害対応の際に即座に活用できるよう、各コマンドの使い方を覚えておきましょう。

ユーザー・権限管理コマンドのまとめ Linuxのユーザー管理や権限管理に関するその他のコマンドについては、以下のまとめ記事もあわせて参考にしてください。

【Linux】ユーザー・権限管理コマンドまとめ
ITナレッジライフ

【Linux】ユーザー・権限管理コマンドまとめ

Linuxのユーザー管理(useradd, adduser, userdel)や権限管理(chmod, chown, sudo, umask)に関する必須コマンドを一覧で紹介。新規ユーザー作成からsudo権限の付与、再帰的なパーミッション変更まで、実務で役立つ使い方や実例を体系的にまとめています。


以上で本記事の解説を終わります。
よいITライフを!
ITナレッジライフ 運営者
この記事を書いた人

Z (ITナレッジライフ)

現役のITエンジニア。Linux、プログラミング、IT用語など、日々の業務で得た「痒いところに手が届く」技術情報を発信しています。

プロフィールと編集ポリシーを見る

Linuxユーザにお勧めの本 ↗

最新版

ゼロからはじめるLinuxサーバー構築・運用ガイド 第2版 動かしながら学ぶWebサーバーの作り方

難易度
実用性
最新度

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。

人気記事


記事を評価

Thanks!
目次
Scroll to Top