マルチユーザーのLinux環境で作業する場合、現在どのユーザー・アカウントでログインしているかを知ることはしばしば不可欠だ。サーバーの管理、自動化のスクリプト、パーミッションのトラブルシューティングなど、Linuxには現在のログイン名を表示するコマンドが複数用意されている。

whoamiコマンドを使う

whoamiコマンドは、現在の有効なユーザー名を表示する最も簡単な方法です。

どのように動作するか

  • 現在のプロセスの実効ユーザーID(EUID)を読み取る。
  • etc/passwdで関連するユーザー名を調べる。
  • 常に現在の自分を表示する。

最適な使用例

  • sudoを使う時やユーザーを切り替える時、”whoami “はアクティブなユーザーを表示する。

idコマンドの使用

idコマンドはユーザー名だけでなく、 ユーザーID(UID)グループID(GID)グループメンバーシップも表示します。コマンドを使う

###atp_notr_1_code_tag_notr_atp##。

または、フラグなし:

###atp_notr_2_code_tag_notr_atp###。

どのように機能するか

  • システムのユーザーデータベースを使用して、現在の ID とグループ情報を表示します。

  • -u → UID を表示する。

  • -n → 数値 ID の代わりにユーザー名を表示する。

logname コマンドの使用法

lognameコマンドは、セッションの開始時に使用された元のユーザー名を表示します。

コマンドを使用します:

###atp_notr_3_code_tag_notr_atp##。

主な違い

  • lognameは常に、セッションにログインする際に使用したユーザー名を返します。

  • suやsudoでユーザーを切り替えても、元のログイン名が表示されます。

who “コマンドの使い方

whoコマンドは、現在ログインしているすべてのユーザーとそのセッションの詳細を表示します。

コマンドを使用します:

コマンド: ###atp_notr_4_code_tag_notr_atp###

出力例:

出力例: ###atp_notr_5_code_tag_notr_atp###

どのように機能するか

  • var/run/utmpからセッションデータを読み込む。

  • 元のログインユーザー名、ターミナル、ログインタイムスタンプを表示します。

🔹最良の使用例:

  • 現在のセッションや マルチユーザー環境を監査する場合。

USER環境変数の使用

ほとんどのLinuxディストリビューションでは、現在のユーザー名は$USER環境変数に格納されています。

コマンドを実行する:

###atp_notr_6_code_tag_notr_atp##。

出力例:

出力例: ###atp_notr_7_code_tag_notr_atp###

どのように機能するか

  • ログイン中に設定された$USER変数の値を取得する。

  • 軽量で非常に速い

高度な使用例

a) シェルスクリプトの内部

###atp_notr_8_code_tag_notr_atp###。

自動ロギングに便利。

b) サーバー上のログインユーザーのチェック

###サーバー上のログインユーザーをチェックする。

出力例:

出力例: ###atp_notr_10_code_tag_notr_atp###

すべてのアクティブユーザーを表示します。

c) psと組み合わせてプロセスオーナーを指定する

###atp_notr_11_code_tag_notr_atp###。
  • 現在のユーザーが所有するすべてのプロセスを表示します。

セキュリティに関する考慮事項

  • マルチユーザーサーバー:特権コマンドを実行する前に、常に実効ユーザを確認してください。

  • Sudoコンテキスト: 環境変数のなりすましを避けるため、$USERの代わりに “whoami “を使う。

  • ログスクリプト: 正確なユーザー名を報告するために、id -unを使う。

結論

Linuxには、現在のログイン名を表示するコマンドが複数用意されているが、それぞれ微妙に目的が異なる:

  • アクティブ・ユーザー・アイデンティティには“whoami “を使う。
  • グループ情報も必要な場合は、“id -un “を使う。
  • 誰が最初にログインしたかを調べるには、“logname “を使う。
  • echo $USERは、素早く検索したり、シェル・スクリプトを書くのに使う。

これらの違いを理解することは、システム管理、スクリプトの自動化、セキュリティ監査にとって重要である。