システム管理者が各ユーザーの最後のログインの日付を決定し、そうしていないアカウントのリストを準備する必要があるときが来ます。
lastlogコマンドを以前に知らなかった場合、このデータを提供することがどれほど簡単かつ迅速に行えるか驚くでしょう。

まだ考えている場合は、このコマンドがLinuxシステムを実行しているサーバーで実行できる優れたセキュリティ検証方法の1つであることも忘れないでください。 彼女はあなたが潜在的な問題を識別するのを手伝います。 たとえば、長い間非アクティブであったアカウントは、それらがもはや必要でなく、無効にされていることを意味する場合があります。 しかし、ユーザーがバハマのどこかで休暇を取ることになっていたときにアクティブだったアカウントは、サーバーのセキュリティの問題を示唆する可能性があります。
lastlogコマンドは、ユーザーの最後のログインに関する情報を保存しますが、
wtmpファイルにあるログに関する情報のみを提供します。 このファイルのエントリはバイナリ形式で作成されるため、特別なコマンドを使用しないと表示できません。 コンソールにログインすると、次のメッセージが画面に表示されるという事実に多くの人が注意を払っていると思います。
Last login: Wed Nov 11 13:19:44 on ttys002
この行は、
ログインユーティリティによって形成され
ます。ユーザー認証の後、ファイル/ var / log / lastlogにアクセスし、以前に成功したログインに関する情報を抽出し、画面に表示してから、
lastlogファイルのエントリを更新します。 各ユーザーの最終ログオン時刻に関するエントリを含むファイル/ var / log / lastlogとは異なり、ファイル/ var / log / wtmpは、すべてのユーザーログインと、このファイルが作成された時点からのログインを保存します。
特定のユーザーのデータを表示するには、次のコマンド
last xxxを使用する必要があります
。xxxはユーザーのログインです。 また、パラメーター5で
head sortコマンドを使用すると、画面に最後の5つの結果のみを表示するのに役立ちます。
最近のコマンドの履歴をどの程度「深く」見ることができるかは、
wtmpファイルがどれだけの期間存在していたかに依存します。 たとえば、
logrotateユーティリティを使用して、ログファイルを監視し、これらのファイルが指定されたサイズを超えた場合(または指定された時間間隔後に)、いわゆるローテーションを提供できます。 また、複数の
wtmpファイルをサポートすることができ、
logrotate.confに次のようなエントリがあり
ます 。
/var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
複数の
wtmpファイルがある場合でも、一部のユーザーは単にデータを表示しない場合があります。 個々のユーザーチェックの結果、ユーザーに関するデータを受け取っていない場合、これは、
wtmpファイルに特定のユーザーのエントリがないことを意味します。
wtmpファイルが作成された日付を確認するには、コンソールに
最後のmiaを入力します。
各ユーザーの最終ログイン情報を見つける最良の方法は、
lastlogコマンドを使用すること
です 。 ユーザーがシステムに一度もログインしたことがない場合、端末名と最後のログイン時刻の代わりに、文字列** Never never login **が表示されます。 出力結果が多数の行で構成される場合は、moreコマンドを使用することもできます。これは、
lessコマンドとは異なり、画面上のファイルの内容を個別のページに表示します。 結果は次のようになります。
おそらく、bin、daemon、adm、およびその他のサービスアカウントがシステムに一度もログインしたことがないことに驚くでしょう。 これは確かにそうであり、ユーザー登録時に割り当てられたシェル(ログインシェル)に対してのみ、/ sbin / nologinパラメーターが設定されているため、認証が不可能であることを意味します。 残りの入力データは、認証が行われたシステムの日付と時刻を示します。
ログインしたことがないすべてのアカウントのリストを作成するには、次のコマンドセットを使用する必要があります。
lastlogチームについてはすでによく知っているので、詳しくは説明しません。キーワードで検索する
grepユーティリティを追加する価値があります。この場合は単語
Neverです。データのある最初の列のみを表示するには、
awkユーティリティを次の構文は
'{print $ 1}'です。
lastlogのエントリは、ユーザー識別子(UID)に従ってリストされます-スーパーユーザー(root)から/ etc / passwdファイルで最高のUIDを持つユーザーまで。 これは、
lastlogファイル
自体の形式によるものです。 ほとんどのUnixログファイルとは異なり、各ユーザーのログの
lastlogファイルでは個別の場所が予約されており、各レコードの場所はUIDでインデックス付けされています。 その後、特に16ビットUID 65536など、システムに可能なUID範囲の上限を持つアカウントがある場合、ファイルは固定サイズになります。ただし、これは、識別子が厳密に連続していない場合のみ、大量の未使用スペースも作成します。 システムが32ビットUIDをサポートしている場合、ファイルは非常に大きくなり、4,294,967,296(232)の異なる識別子値を持つ可能性があります。
lastlogファイルの各エントリには、ユーザー名、ユーザーがログオンしている端末の名前、および最後のログイン時刻が含まれています。 ファイルの先頭にあるスーパーユーザー(UID 0)のレコードは次のようになります。
特定の場合に一部のコンピューターで
lastlogコマンドを実行すると、コマンドが「スタック」しているような印象を受けることがあります。 これは、システムに2人のユーザー(rootとユーザー)のみがログインしている場合でも、システムで作業できるユーザーの最大数の場所が/ var / log / lastlogファイルに割り当てられているためです。 したがって、/ var / log / lastlogファイルでは、システムで作業したユーザーのID番号の間に大きなギャップがある場合があります。 そのような間隔を表示すると、プログラムは画面に情報を表示せず、「フリーズ」の印象があります。 したがって、急いでボタンを押してコンソールを閉じるのではなく、コマンドが応答するのを待ちます。
確立した
とおり 、
lastlogコマンドは、サポートをまだ実装しているユーザーのログを確認し、システム内のアカウントが適切に使用され、関連性があることを確認するのに非常に役立ちます。 また、ログのサイズを確認することを忘れないでください。そうしないと、ログのボリュームがシステムの合計サイズよりもかなり大きくなることがあります。
仕事でかなり単純なコマンドを使用することを怠らないでください。もちろん、その場所を賢く使用してください。 頑張って