LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルサーバーの運用では、「誰が」「いつ」ログインしたかを確認する場面が頻繁にあります。不正アクセスの調査、障害発生時の原因切り分け、セキュリティ監査など、ログイン履歴の確認はサーバー管理者にとって必須のスキルです。
本記事では、Linuxでログイン履歴を確認するための3つのコマンド(last・lastlog・lastb)について、使い方・オプション・参照するログファイルの違いまで実行例を交えて解説します。
記事のポイント
-
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権限が必要 |
これらのコマンドは、バイナリ形式のログファイルを読み取って表示する専用ツールです。catやlessでは読み取れないため、必ず上記のコマンドを使用してください。
[!NOTE] 上記の権限はログファイルのパーミッションに依存します。
lastやlastlogは多くのディストリビューションで一般ユーザーでも実行できますが、環境やセキュリティポリシーによってはパーミッションが変更されていて、一般ユーザーでは実行できない場合もあります。
lastコマンド:ログイン・ログアウトの全履歴を確認する
lastコマンドは、システムへのログイン・ログアウト・再起動の履歴を新しい順に表示します。サーバー管理において最もよく使うログイン履歴確認コマンドです。
lastコマンドの基本的な使い方
引数なしで実行すると、すべてのログイン履歴を表示します。
lasttestuser pts/0 192.168.1.10 Mon Aug 12 09:00 still logged intestuser 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 testusertestuser pts/0 192.168.1.10 Mon Aug 12 09:00 still logged intestuser pts/0 192.168.1.10 Sun Aug 11 18:30 - 19:45 (01:15)
wtmp begins Sat Aug 10 09:55:00 2026IPアドレスをホスト名に変換せず表示する(-iオプション)
-iオプションを使うと、接続元のホスト名をIPアドレスで表示します。ホスト名の逆引き(DNSDNS [ディーエヌエス]Domain Name System。インターネット上のドメイン名とIPアドレスを紐付けて管理・変換するシステム解決)をスキップするため、表示速度も向上します。
last -iシステムの再起動履歴を確認する
rebootを引数に指定すると、システムの再起動履歴のみを表示できます。
last rebootreboot system boot 5.15.0-generic Sat Aug 10 09:55 still runningreboot 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 3testuser pts/0 192.168.1.10 Mon Aug 12 09:00:15 2026 still logged intestuser 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 3lastコマンドの主なオプション一覧
| オプション | 説明 |
|---|---|
-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コマンドの基本的な使い方
lastlogUsername Port From Latestroot pts/1 192.168.1.20 Sun Aug 11 14:00:05 +0900 2026daemon **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 2026appuser pts/0 192.168.1.10 Sat Aug 10 10:00:00 +0900 2026システムアカウント(daemon、bin、sysなど)は通常ログインしないため「Never logged in」と表示されます。
特定のユーザーの最終ログインを確認する(-uオプション)
-uオプションにユーザー名を指定すると、そのユーザーの最終ログイン情報のみを表示します。
lastlog -u testuserUsername Port From Latesttestuser pts/0 192.168.1.10 Mon Aug 12 09:00:15 +0900 2026一定期間ログインしていないユーザーを確認する(-bオプション)
-bオプションに日数を指定すると、その日数以上ログインしていないユーザーを一覧表示します。セキュリティ監査で不要アカウントの洗い出しに活用できます。
lastlog -b 9090日以上ログインしていないユーザーのみが表示されます。
最近ログインしたユーザーを確認する(-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 lastbadmin 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 2026ssh:nottyと表示されている場合は、SSH経由でのログイン試行が失敗したことを示します。同一IPアドレスから短時間に大量の失敗履歴がある場合、ブルートフォース攻撃の可能性があります。
表示件数を制限する
lastコマンドと同様に、-nオプションで表示件数を制限できます。
sudo lastb -n 10特定のユーザーの失敗履歴を確認する
引数にユーザー名を指定すると、そのユーザーの失敗履歴のみを表示します。
sudo lastb rootrootユーザーへのログイン失敗回数が多い場合は、外部からの攻撃を受けている可能性があります。
ログイン履歴に関するログファイル
last・lastlog・lastbの各コマンドは、以下のバイナリログファイルを参照しています。
| ファイル | 内容 | 参照コマンド |
|---|---|---|
/var/log/wtmp | ログイン・ログアウト・再起動の全履歴 | last |
/var/log/lastlog | 全ユーザーの最終ログイン日時 | lastlog |
/var/log/btmp | ログイン失敗の履歴 | lastb |
バイナリファイルのためcatやlessでは閲覧できない
これらのログファイルはバイナリ形式で保存されています。catやlessで開いても文字化けした内容が表示されるだけで、正しく読み取ることはできません。
cat /var/log/wtmp必ずlast・lastlog・lastbの専用コマンドを使用してください。
ログファイルのローテーション
/var/log/wtmpは、ログローテーション(logrotate)によって定期的にアーカイブされる場合があります。過去の履歴を確認したい場合は、-fオプションでアーカイブファイルを指定します。
last -f /var/log/wtmp.1ディストリビューションの設定により、ローテーションの頻度や保存世代数が異なるため、必要に応じて/etc/logrotate.confや/etc/logrotate.d/を確認してください。
現在ログイン中のユーザーを確認する方法
過去の履歴ではなく、現在ログイン中のユーザーを確認したい場合はwhoコマンドやwコマンドを使用します。
whoコマンド
whotestuser 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.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATtestuser pts/0 192.168.1.10 09:00 0.00s 0.05s 0.00s wroot pts/1 192.168.1.20 09:15 5:00 0.02s 0.02s -bashwコマンドはwhoよりも詳細な情報を表示し、各ユーザーが現在実行しているコマンドやアイドル時間まで確認できます。
実務でのログイン履歴の活用例
セキュリティ監査:不正アクセスの調査
不正アクセスが疑われる場合、lastbとlastを組み合わせて調査を行います。
# 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コマンドでユーザを削除する
Linuxでユーザ削除をする際はroot権限でuserdelコマンドを実行します。ホーム・ディレクトリとメールスプールを含めて削除する場合は、-rオプションを指定します。
障害対応:作業証跡の確認
障害発生時に、どのユーザーがいつサーバーにログインして作業を行ったかを確認できます。
# 特定の日時以降のログイン履歴を確認last -F | head -20コマンドの実行履歴もあわせて確認したい場合は、historyコマンドも活用しましょう。

【Linux】historyコマンドで実行日時(時間)を表示する方法
Linuxのhistoryコマンドでコマンドの実行日時(時間)を表示する方法を解説します。HISTTIMEFORMAT変数の設定方法や、永続化する手順をわかりやすく紹介します。
まとめ
Linuxでログイン履歴を確認するには、目的に応じてlast・lastlog・lastbの3つのコマンドを使い分けます。
| 目的 | 使用コマンド |
|---|---|
| ログイン・ログアウトの全履歴を確認したい | last |
| 全ユーザーの最終ログイン日時を確認したい | lastlog |
| ログイン失敗の履歴を確認したい | sudo lastb |
| 現在ログイン中のユーザーを確認したい | who または w |
これらのコマンドはバイナリ形式のログファイル(/var/log/wtmp・/var/log/lastlog・/var/log/btmp)を参照するため、catやlessではなく専用コマンドで確認してください。セキュリティ監査や障害対応の際に即座に活用できるよう、各コマンドの使い方を覚えておきましょう。
ユーザー・権限管理コマンドのまとめ Linuxのユーザー管理や権限管理に関するその他のコマンドについては、以下のまとめ記事もあわせて参考にしてください。
ITナレッジライフ【Linux】ユーザー・権限管理コマンドまとめ
Linuxのユーザー管理(useradd, adduser, userdel)や権限管理(chmod, chown, sudo, umask)に関する必須コマンドを一覧で紹介。新規ユーザー作成からsudo権限の付与、再帰的なパーミッション変更まで、実務で役立つ使い方や実例を体系的にまとめています。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5

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