/var/run/utmp のログインレコードを調査する
このステップでは、/var/run/utmp
ファイルについて学び、who
や w
などのコマンドがこのファイルから情報を取得する仕組みを理解します。このファイルは、Linux がシステムにログインしているユーザーを追跡する上で重要な役割を果たします。
/var/run/utmp
ファイルは、現在システムにログインしているユーザーに関する情報を含むバイナリファイルです。ユーザーがログインしたりログアウトしたりするたびに、このファイルは常に更新されます。who
、w
、users
などのコマンドは、このファイルを読み取って現在のログイン情報を表示します。
/var/run/utmp
はバイナリファイルであるため、テキストファイルのように cat
や less
などのコマンドで内容を簡単に表示することはできません。そのようにすると、読めない文字が表示されます。
cat
でこのファイルを表示して、何が起こるかを確認してみましょう(そしてなぜこれをしないのかを理解しましょう)。
cat /var/run/utmp
バイナリファイルなので、たくさんの文字化けした文字列が表示されるでしょう。
<binary_output>
/var/run/utmp
の内容を人間が読める形式で表示するには、通常、このファイルを解析するように設計されたコマンドを使用します。前のステップで使用した who
や w
などがそれに該当します。
/var/run/utmp
の内容を読み取って表示する専用のコマンドに utmpdump
があります。このコマンドは、デバッグやファイル内の生データを調べるのに便利です。
utmpdump
を使って /var/run/utmp
の内容を表示してみましょう。
utmpdump /var/run/utmp
各ログインセッションのレコードが表示される、構造化された読みやすい出力が表示されるはずです。正確な出力はシステムの現在の状態によって異なりますが、次のような内容になります。
Utmp dump of /var/run/utmp
[<type>] [<pid>] [<line>] [<id>] [<user>] [<host>] [<exit>] [<session>] [<tv_sec>] [<tv_usec>] [<addr_v6>]
...
[7] [ <pid> ] [ :0 ] [ :0 ] [ labex ] [ :0 ] [ 0, 0 ] [ <session_id> ] [ <timestamp> ] [ <usec> ] [ <ipv6_address> ]
...
この出力には、utmp
ファイル内の各エントリに関する様々なフィールドが表示されます。エントリの種類(ユーザーログインなど)、プロセス ID、端末ライン、ユーザー名、ホスト、ログイン時間などが含まれます。
/var/run/utmp
を理解することで、Linux がユーザーセッションを追跡する仕組みや、who
や w
などのコマンドが内部でどのように動作するかを理解することができます。
Continue をクリックして、この実験を完了しましょう。