はじめに
この実験では、現在 Linux システムにログインしているユーザーを確認する方法を学びます。ログインしているユーザーを一覧表示する who や、それらのセッションとアクティビティに関する詳細情報を取得する w などの基本的なコマンドを探索します。
この実験の終了時には、Linux システム上のアクティブなユーザーをすばやく特定し、それらのログインセッションに関する基本的な情報を理解できるようになります。これには、/var/run/utmp のログインレコードを調査する方法も含まれます。
who コマンドでログイン中のユーザーを一覧表示する
このステップでは、who コマンドを使用して現在システムにログインしているユーザーを一覧表示する方法を学びます。これは、システム管理者や一般ユーザーがシステム上でアクティブなユーザーを確認するための基本的なコマンドです。
who コマンドは、現在ログインしているユーザーに関する情報を表示します。この情報には通常、ユーザー名、使用している端末ライン、ログインした時間、および(該当する場合)ログイン元のリモートホストが含まれます。
試してみましょう。ターミナルが開いていない場合は、開いてください。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。
次のコマンドを入力し、Enter キーを押します。
who
次のような出力が表示されるはずです。
labex :0 <timestamp> (:0)
出力を分解してみましょう。
labex: これはログインしているユーザーのユーザー名です。この LabEx 環境では、デフォルトのユーザーはlabexです。:0: これは使用されている端末ラインまたはディスプレイを示します。:0は通常、主要なグラフィカルディスプレイを指します。<timestamp>: これはユーザーがログインした日付と時間を示します。タイムスタンプの正確な形式と内容は多少異なる場合があります。(:0): これはしばしばログインセッションに関する追加情報を提供します。この場合、ディスプレイを確認しています。
who コマンドはシンプルですが、システムを使用しているユーザーをすばやく確認するのに強力です。ユーザーのアクティビティを理解するための良い最初のステップです。
覚えておいてください、練習が大切です!コマンドを数回実行して、使い慣れるようにしてください。
Continue をクリックして次のステップに進みます。
w コマンドでユーザーセッションを確認する
このステップでは、w コマンドを探索します。このコマンドは、現在ログインしているユーザーに関する詳細情報と、それらのユーザーが何をしているかを提供します。who コマンドが迅速な一覧を表示するのに対し、w コマンドはユーザーセッションに関連するシステムの現在のアクティビティのスナップショットを提供します。
w コマンドは、誰がログインしているか、そして何をしているかを表示します。これは、システムの使用状況を監視し、各ユーザーに関連付けられたアクティブなプロセスを特定するのに便利なツールです。
ターミナルで w コマンドを実行しましょう。もしターミナルを閉じてしまった場合は、再度 Xfce Terminal を開いてください。
次のコマンドを入力し、Enter キーを押します。
w
次のような出力が表示されるはずです。
<timestamp> up <uptime>, <users> users, load average: <load_avg>
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
labex :0 :0 <login_time> <idle_time> <jcpu_time> <pcpu_time> w
出力の各部分を分解してみましょう。
- 最初の行は概要を提供します。
<timestamp>: 現在の時刻。up <uptime>: システムが最後に起動してから稼働している時間。<users> users: 現在ログインしているユーザーの数。load average: <load_avg>: 過去 1 分、5 分、および 15 分間のシステムの平均負荷。これは実行待ちのプロセスの平均数を示します。
- ヘッダー行 (
USER,TTY,FROM,LOGIN@,IDLE,JCPU,PCPU,WHAT) は、各ログインユーザーに関する列の説明を提供します。 USER: ユーザー名。TTY: ユーザーが使用している端末ライン。FROM: ユーザーがログインしたリモートホスト(該当する場合)。このようなローカルのグラフィカルセッションでは、しばしば:0が表示されます。LOGIN@: ユーザーがログインした時間。IDLE: 端末のアイドル時間。JCPU: 端末にアタッチされたすべてのプロセスが使用した時間。PCPU: 現在のプロセスが使用した時間。WHAT: ユーザーの現在のプロセスのコマンドライン。この場合、wが表示されます。なぜなら、これがあなたが実行したコマンドだからです。
w コマンドは、who コマンドと比較してより動的な情報を提供します。ログインしているユーザーだけでなく、それらのユーザーが現在何をしているかも示します。
w コマンドを試してみてください。システムのアクティビティを迅速に評価するのに便利です。
Continue をクリックして次のステップに進みます。
/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 をクリックして、この実験を完了しましょう。
まとめ
この実験では、Linux システムに現在ログインしているユーザーを確認する方法を学びました。まず、who コマンドを使用しました。このコマンドは、ログインしているユーザー、その端末、ログイン時間、およびソースの基本的な一覧を提供します。このコマンドは、アクティブなユーザーを迅速に特定するための基本的なツールです。
who コマンドの次に、w コマンドを探索しました。抜粋では w コマンドの詳細は提供されていませんでしたが、このコマンドは、who コマンドが提供する単純な一覧を超えて、ログインしているユーザーとその現在のアクティビティに関するより詳細な情報を提供するツールとして紹介されています。



