このチュートリアルでは、 last
を使用してLinuxで最後にログインしたユーザーを見つける方法を説明します。 、 lastb
およびlastlog
例を含むコマンド。
はじめに
Linuxシステム管理者は、Linuxサーバーのユーザーのログイン日時を定期的に確認する必要があります。アクティブなユーザーの数、非アクティブなユーザーの数、いつログインするか、どのくらいの時間ログインするかなど、いくつかの役立つ詳細が表示されます。
一部のユーザーアカウントが長期間使用されていない場合、不要になった場合は単にロックすることができます。 Linuxサーバーを監査するときに最終ログイン日を使用して、問題の原因となった可能性のあるユーザーを調査することもできます。
幸い、GNU / Linuxオペレーティングシステムには、 last
というトリプレットコマンドが含まれています。 、 lastb
およびlastlog
最近のユーザーのログイン日を表示します。
1。最後のコマンドでLinuxに最後にログインしたユーザーのリストを表示する
名前が示すように、 last
コマンドは、LinuxおよびUnixライクなシステムで最後にログインしたユーザーを表示するために使用されます。 / var / log / wtmp
を読み取ります ファイルを作成し、そのファイルが作成されてからログインおよびログアウトしたすべてのユーザーを検索します。特定のユーザーの最近のログイン日を一覧表示したり、Linuxシステムを再起動したユーザーを見つけたりすることもできます。 last
の助けを借りて コマンド。
システムはwtmp
にのみ情報を記録することに注意してください ファイル。このファイルが何らかの理由で利用できない場合は、 touch
で作成してください。 以下のようなコマンド:
$ sudo touch /var/log/wtmp
ここで、 last
を使用して最近のログイン日時を確認しましょう コマンド。
Linuxシステムでの最後のログイン、その継続時間、およびその他の情報を表示するには、次のコマンドを実行します。
$ last
出力例:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running reboot system boot 5.4.0-48-generic Fri Nov 20 10:13 - 11:44 (01:31) . . . reboot system boot 5.4.0-33-generic Wed Jul 8 08:49 - 11:41 (02:52) ostechni web console Mon Jul 6 08:19 - 08:20 (00:00) ostechni pts/2 192.168.225.37 Mon Jul 6 08:14 - 08:30 (00:15) ostechni pts/0 192.168.225.37 Mon Jul 6 07:41 - 12:27 (04:45) reboot system boot 5.4.0-33-generic Mon Jul 6 07:21 - 12:27 (05:06) ostechni pts/3 192.168.225.37 Sat Jul 4 12:01 - 12:12 (00:10) ostechni pts/2 192.168.225.37 Sat Jul 4 11:14 - 13:01 (01:46) ostechni pts/0 192.168.225.37 Sat Jul 4 07:55 - 13:01 (05:05) reboot system boot 5.4.0-33-generic Sat Jul 4 07:53 - 13:03 (05:09) ostechni tty1 Fri May 29 10:07 - down (00:00) reboot system boot 5.4.0-33-generic Fri May 29 10:06 - 10:07 (00:01) ostechni pts/0 192.168.225.37 Fri May 29 09:36 - 10:06 (00:29) ostechni tty1 Fri May 29 09:36 - down (00:29) reboot system boot 5.4.0-31-generic Fri May 29 09:35 - 10:06 (00:30) ostechni tty1 Sun May 24 13:17 - down (00:02) reboot system boot 5.4.0-31-generic Sun May 24 13:16 - 13:20 (00:03) wtmp begins Sun May 24 13:16:52 2020
上記の出力にあるように、最後のコマンドは最近のログインの次の詳細を表示します。
- ユーザーの名前。まだログインしているユーザーがいる場合は、その詳細も表示されます。
- セッションが行われた端末デバイスのタイプ(ttyやptsなど)。
- ユーザーがログインしたソースIPアドレスまたはホスト名。
- ログインの日付とタイムスタンプ(つまり、ログインセッションの開始時間と停止時間)。
- セッションの合計時間。
- 最後の行は、
wtmp
で最初に記録されたセッションの日付と時刻を示します ログファイル。
上記の出力では、 restart
という名前の特別なユーザーのログインエントリがあることに気付いたかもしれません。 。 last
コマンドは、コンピューターが起動するたびにこのユーザーの記録を保持します。
last
を実行すると オプションを指定せずにコマンドを実行すると、ログ出力全体が表示されます。好みに応じて、出力をフィルタリング、フォーマット、および制限するための多くのオプションがあります。最も一般的なオプションの例を含めました。
1.1。出力を特定のユーザーに制限する
すでに述べたように、 last
コマンドは、 wtmp
に記録された最近のすべてのログインを一覧表示します ファイル。特定のユーザーの最近のログインを表示する場合(つまり、特定のユーザーによるすべてのログインを表示する場合)、たとえば ostechnix 、コマンドは次のようになります:
$ last ostechnix
出力例:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) [...]
以下のように、カンマで区切って複数のユーザー名を指定することもできます。
$ last ostechnix sk
1.2。出力を特定のttyまたはptsに制限する
last
コマンドは、セッションが行われた端末デバイスのタイプ(ttyやptsなど)の記録を保持します。
たとえば、ユーザーがローカルまたはssh経由でLinuxマシンにログインした可能性があるとします。出力を特定のtty
に制限する場合 、単に実行します:
$ last tty1
出力例:
ostechni tty1 Thu Jan 7 08:29 still logged in ostechni tty1 Wed Jan 6 11:00 - down (02:31) ostechni tty1 Fri Nov 20 11:52 - down (00:38) [...]
ttyの名前は省略できます。たとえば、 last 1
を実行できます last tty1
の代わりに 。
同様に、 pts
のみを一覧表示するには セッションのログイン、実行:
$ last pts/0 ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) [...]
以下のように、ttyを使用して複数のユーザー名を指定することもできます。
$ last ostechnix sk pts/0 tty1
1.3。出力を特定の行数に制限する
wtmp
ログファイルには多数のエントリが含まれる可能性があります。 last
の出力を制限したい場合 特定の行数にコマンドを送信するには、 -n
を使用します 以下のようなフラグ:
$ last -n 5
または、
$ last -5
上記のコマンドは、出力に5行のみを表示します。
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.4。 IPアドレスの代わりにホスト名を表示する
デフォルトでは、 last
コマンドは、ユーザーがログに記録したソースIPを表示します。 IPアドレスの代わりにホスト名を表示する場合は、 -d
を使用します (または-dns
)オプション:
$ last -d -5
-w
を使用して、出力に完全なユーザー名とドメイン名を表示することもできます。 (または-fullnames
)オプション。
1.5。ホスト名とIPアドレスを非表示にする
ホスト名またはIPフィールドを抑制するには、 -R
を使用します オプション。
$ last -5 -R
出力例:
ostechni pts/0 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot Thu Jan 7 08:20 still running ostechni pts/0 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.6。特定の時間にユーザーのログインレコードを表示する
-p
(または-present
)オプションは、現在または指定された時間に誰がログインしたかを検索するために使用されます。
たとえば、次のコマンドを実行して、今日の8時30分に最後にログインしたユーザーを一覧表示します。
$ last -p 08:30
出力例:
ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running wtmp begins Sun May 24 13:16:52 2020
現在ログに記録されているユーザーを一覧表示するには(つまり、このコマンドの実行時に、次のコマンドを実行します:
$ last -p now
1.7。特定の時間間隔内にログインしているユーザーを表示する
last
コマンドには2つのオプションがあります。つまり-s
(-since
)および -t
(-until
)特定の期間内にログインしたユーザーを表示します。 -s
オプションは、指定された時間以降のログインの状態と -t
を表示するために使用されます オプションは、指定された時間までのログインの状態を表示するために使用されます。
たとえば、 2021-01-07
から行われた最後のログインを表示する場合 2021-01-11
へ 、コマンドは次のとおりです:
$ last -s 2021-01-07 -t 2021-01-11
出力例:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
昨日からの最近のログインを表示するには 今日へ 、実行:
$ last -s yesterday -t today
2021年1月7日から現在までのログインレコードのみを一覧表示する場合は、次を実行します。
$ last -s 2021-01-07 ostechni pts/0 192.168.225.37 Mon Jan 11 06:39 still logged in reboot system boot 5.4.0-59-generic Mon Jan 11 06:37 still running ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
1.8。最後にログインしたユーザーを完全な日付と時刻で表示する
-F
(-フルタイムコード> )オプションは、完全なログインとログアウトの日時を
last
で表示するために使用されます コマンドの出力。
$ last -5 -F
出力例:
ostechni pts/0 192.168.225.37 Mon Jan 11 06:39:29 2021 still logged in [...]
1.9。最後の列にホスト名を表示する
-a
(-hostlast
)オプションは、切り捨てを防ぐためにホスト名列を最後に表示するために使用されます。
$ last -d -a ostechni pts/0 Mon Jan 11 06:39 still logged in ostechnix [...]
1.10。疑似ユーザー「再起動」の最終ログインレコードを表示する
前に述べたように、最後のコマンドは「reboot」と「shutdown」という名前の特別な疑似ユーザーの記録を保持します。
「再起動」および「シャットダウン」ユーザーの最終ログインの詳細を表示するには、次のコマンドを使用します。
$ last reboot
$ last shutdown
2。 Linuxでlastbを使用して失敗したログイン試行を表示する
lastb
last
と同じです コマンドですが、すべての不正なログイン試行のみが一覧表示されます。 / var / log / btmp
から失敗したログインの詳細を取得します ファイル。
システムはbtmp
にのみ情報を記録することに注意してください 存在する場合はファイル。このファイルが何らかの理由で利用できない場合は、 touch
で作成してください。 以下のようなコマンド:
$ sudo touch /var/log/btmp
これで、次のようにlastbコマンドを使用して失敗したログイン試行を表示できます。
$ sudo lastb
出力例:
UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) UNKNOWN tty1 Wed Jan 6 10:59 - 10:59 (00:00) btmp begins Wed Jan 6 10:59:57 2021を開始します
上記のコマンドは、Linuxシステムのすべてのユーザーによるすべての失敗したログイン試行を一覧表示します。 SSH経由で行われたログイン試行の失敗も表示されます。
3。 lastlogコマンドを使用してLinuxで最後にログインしたユーザーを検索する
最後のログ コマンドは、LinuxおよびUnixライクなオペレーティングシステムのすべてのユーザーまたは特定のユーザーの最新のログインを表示します。 / var / log / lastlog
から最後にログインしたユーザーのリストを取得します ファイルを作成し、結果を標準出力で表示します。
すべてのユーザーの最新のログインを表示するには、次のコマンドを実行します:
$ lastlog
出力例:
Username Port From Latest root **Never logged in** daemon **Never logged in** bin **Never logged in** [...] systemd-coredump **Never logged in** ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021 lxd **Never logged in** dnsmasq **Never logged in** libvirt-qemu **Never logged in** libvirt-dnsmasq **Never logged in** cockpit-ws **Never logged in** cockpit-wsinstance **Never logged in** libvirtdbus **Never logged in** _flatpak **Never logged in** sk pts/0 192.168.225.37 Wed Jan 6 11:02:17 +0000 2021 root **Never logged in** nobody **Never logged in**
上記の出力にあるように、 lastlog
コマンドは、システムユーザーアカウントと bin
などの他のサービスアカウントの最終ログインレコードを表示します 、デーモン
、 sys
、 mail
、 nobody
など
lastlog
コマンドは、ユーザーがログインしたログイン名、ポート、送信元IPアドレス、および最後のログイン日時を出力します。ユーザーがログインしたことがない場合は、メッセージ ** Never login **
が出力されます。 出力のポートと時間の代わりに。
なぜ多くのサービスアカウントがログインしたことがないのか疑問に思われるかもしれません。これは、これらのアカウントのログインシェルが / sbin / nologin
に設定されているためです。 。シェルへの直接アクセスを制限するために使用される一般的なセキュリティ慣行です。
3.1。特定のユーザーの最後にログインした詳細を表示する
ostechnix など、指定したユーザーの最後のログレコードを表示する場合 、コマンドは次のようになります:
$ lastlog -u ostechnix
出力例:
Username Port From Latest ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
3.2。 X日より前または最近にログインしたレコードを表示する
lastlog
コマンドは、X日より前または最近の最近のログインレコードを表示できます。
たとえば、 -b
を使用して、5日より前のすべてのユーザーの最近のログインレコードを取得できます。 以下のようなフラグ:
$ lastlog -b 5
同様に、5日より後のログインレコードを表示するには、 -t
を使用します フラグ:
$ lastlog -t 5
3.3。 Linuxでlastlogを使用して最終ログイン情報を削除またはクリアする
ユーザーのlastlogレコードが必要ない場合は、 -C
を使用してクリアします。 (-clear
)フラグ:
$ sudo lastlog -u ostechnix -C
ログレコードがクリアされているかどうかを確認するには、次のコマンドを実行します。
$ lastlog -u ostechnix Username Port From Latest ostechnix **Never logged in**
助けを得る
詳細については、それぞれのコマンドのヘルプセクションを参照してください。
$ last --help
$ lastb --help
$ lastlog --help
または、各コマンドのマニュアルページを確認してください:
$ man last
$ man lastb
$ man lastlog
結論
last
、 lastb
およびlastlog
コマンドは、Linuxシステムでの疑わしいユーザーアクティビティを検出するために役立ちます。 Linuxサーバーに最近ログインした(またはログアウトした)人、いつログインしたのか、どのくらいの期間ログインしたのかを確認することは、トラブルシューティング時に間違いなく役立つ重要な詳細です。
関連記事:
- Linuxで現在ログインしているユーザーを見つける方法
- Linuxですべてのユーザーを一覧表示する方法
- Linuxでユーザーアクティビティを監視する方法
- Linuxシステムへのユーザーのアクセスを制限する方法