LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルで複数のユーザーを使い分けていると、「今、自分はどのユーザーで操作しているのか?」がわからなくなることがあります。whoamiコマンドを使えば、現在の実効ユーザー名をワンコマンドで確認できます。
本記事では、whoamiコマンドの基本的な使い方から、su・sudo使用時の挙動の違い、シェルスクリプトでの活用法、似たコマンド(who am i・id)との使い分けまで、実行例を交えて解説します。
記事のポイント
-
whoamiは現在の実効ユーザー名を表示するコマンド 引数やオプションなしで実行するだけで、今どのユーザーとして操作しているかを即座に確認できる。
-
su・sudosudo [スードゥー / スーデュー]Superuser doの略。一時的に他のユーザー(主に管理者特権)の権限でコマンドを実行する使用時にユーザーの切り替え状態を確認できる
suでユーザーを切り替えた後やsudo suでroot権限に昇格した後の確認に便利。 -
シェルスクリプトでの権限チェックに活用できる スクリプト内で実行ユーザーを判定し、rootでない場合に処理を中断するといった制御が可能。
-
who am iやidコマンドとは役割が異なる
who am iはログイン元のユーザー、idはUID・GID・グループ情報を表示するなど、目的に応じた使い分けが必要。
whoamiコマンドとは
whoamiコマンドは、現在の実効ユーザー名(Effective User)を表示するLinux/UNIXコマンドです。名前の由来は「Who am I?(私は誰?)」で、今自分がどのユーザーとしてシステムを操作しているかを確認するために使用します。
whoamiは内部的にid -unと同等の処理を行っており、EUID(実効ユーザーID)に対応するユーザー名を返します。
主な用途は以下の通りです。
- ユーザー切り替え後の確認:
suやsudo suの後に、意図したユーザーに切り替わっているかを確認 - リモート接続時の確認:SSHSSH [エスエスエイチ]Secure Shell。暗号化されたリモート接続プロトコルでサーバーに接続した際に、正しいユーザーでログインできているかを確認
- シェルスクリプトでの権限チェック:スクリプト内で実行ユーザーを判定し、処理を分岐させる
whoamiコマンドの基本的な使い方
基本構文
whoamiコマンドの構文は非常にシンプルです。
whoami [オプション]通常は引数もオプションも指定せず、whoamiとだけ入力して実行します。
コマンド例:現在のユーザー名を確認
以下の例は、現在操作しているユーザー名を表示します。
whoamitestuser現在のシェルがtestuserの権限で動作していることがわかります。
su・sudo使用時のwhoamiの挙動
whoamiコマンドは実効ユーザー名を表示するため、suやsudoでユーザーを切り替えると表示結果が変わります。
suコマンドでユーザーを切り替えた場合
suコマンドで別のユーザーに切り替えた後にwhoamiを実行すると、切り替え先のユーザー名が表示されます。
su - appuserwhoamiappusersudo suでrootに切り替えた場合
sudo suでroot権限に昇格した後は、whoamiの結果がrootになります。
sudo su -whoamirootsudoで単一コマンドを実行した場合
sudoを付けてwhoamiを実行すると、一時的にroot権限で実行されるためrootと表示されます。
sudo whoamiroot一方、sudoを付けずに実行すれば元のユーザー名が表示されます。この違いを利用して、sudoが正しく動作しているかの確認にも使えます。
なお、sudo -uオプションで特定のユーザーを指定した場合は、そのユーザー名が表示されます。
sudo -u appuser whoamiappusersudo whoamiが常にrootを返すわけではなく、/etc/sudoersの設定や-uオプションの指定によって結果が変わる点に注意してください。
シェルスクリプトでのwhoamiの活用
root権限チェック
システム管理用のスクリプトでは、root以外のユーザーで誤って実行されることを防ぐために、whoamiで実行ユーザーを判定する方法がよく使われます。
#!/bin/bash
if [ "$(whoami)" != "root" ]; then echo "エラー: このスクリプトはroot権限で実行してください。" exit 1fi
echo "root権限で実行中です。処理を開始します。"# 以降の処理...特定ユーザーでの実行を強制する
アプリケーション専用ユーザーで実行する必要があるスクリプトでは、以下のようにチェックできます。
#!/bin/bash
EXPECTED_USER="appuser"
if [ "$(whoami)" != "$EXPECTED_USER" ]; then echo "エラー: このスクリプトは ${EXPECTED_USER} ユーザーで実行してください。" exit 1fi
echo "${EXPECTED_USER} ユーザーで実行中です。"ログにユーザー名を記録する
スクリプトの実行ログに、誰が実行したかを記録する用途にも活用できます。
#!/bin/bash
LOG_FILE="/var/log/my_script.log"
echo "$(date '+%Y-%m-%d %H:%M:%S') [$(whoami)] スクリプトを実行しました" >> "$LOG_FILE"whoamiのオプション
whoamiコマンドには主に以下の2つのオプションがあります。
| オプション | 説明 |
|---|---|
--help | ヘルプメッセージを表示する |
--version | バージョン情報を表示する |
whoamiはユーザー名を表示するだけのシンプルなコマンドのため、動作を変更するオプションはありません。
whoamiと似たコマンドの違い
ユーザー情報を確認するコマンドには、whoami以外にもwho am iやidがあります。それぞれの違いを理解して、目的に応じて使い分けましょう。
比較表
| コマンド | 表示内容 | su後の変化 | 主な用途 |
|---|---|---|---|
whoami | 現在の実効ユーザー名 | 変わる | 今の操作権限を確認する |
who am i | ログイン元のユーザー名・端末・時刻 | 変わらない | 最初にログインしたユーザーを確認する |
id | UID・GID・所属グループの一覧 | 変わる | 権限やグループの詳細を確認する |
logname | ログイン時のユーザー名 | 変わらない | ログインユーザーの名前だけを取得する |
whoamiとwho am iの違い
whoamiは現在の実効ユーザー名を返すのに対し、who am iはシステムに最初にログインしたユーザーの情報を返します。
最大の違いはsuコマンドでユーザーを切り替えたときの挙動です。
# 元のユーザー(testuser)で確認whoamiwho am i
# rootに切り替えて再度確認sudo su -whoamiwho am i# 元のユーザーで確認testusertestuser pts/0 2026-08-11 10:00
# rootに切り替え後roottestuser pts/0 2026-08-11 10:00whoamiはrootに変わりましたが、who am iは最初にログインしたtestuserのまま変わりません。これにより、元々どのユーザーとしてログインしていたかを確認できます。
ただし、who am iはutmp/wtmpのログインレコードに基づいて動作するため、SSHやコンソールなどの対話的ログインセッション以外では正しく動作しない場合があります。たとえばDockerDocker [ドッカー]コンテナ型仮想化プラットフォームコンテナ内や、擬似端末(pty)を伴わないスクリプト実行環境では、結果が空になったりエラーになることがあるため注意が必要です。
whoamiとidコマンドの違い
idコマンドは、whoamiよりも詳細な情報を表示します。
iduid=1000(testuser) gid=1000(testuser) groups=1000(testuser),27(sudo),999(docker)idはUID(ユーザーID)、GID(グループID)、所属グループの一覧まで表示されるため、権限やグループの詳細を確認したい場合に適しています。
ユーザー名だけを知りたい場合はid -unを使うことで、whoamiと同じ結果が得られます。
id -untestuserWindowsでのwhoamiコマンド
whoamiコマンドはLinuxだけでなく、Windowsのコマンドプロンプト(cmd)やPowerShellでも使用できます。
基本的な使い方
whoamidesktop-abc1234\testuserWindowsでは「コンピュータ名\ユーザー名」の形式で表示されます。
Windows版の主なオプション
Windows版のwhoamiにはLinux版にはない便利なオプションがあり、より詳細な情報を確認できます。
| オプション | 説明 |
|---|---|
/user | ユーザー名とSID(セキュリティ識別子)を表示する |
/groups | 所属グループの一覧を表示する |
/priv | 現在のユーザーに割り当てられた特権(権限)を一覧表示する |
/all | ユーザー情報、グループ、特権をすべて表示する |
/fo 形式 | 出力形式を指定する(TABLE、LIST、CSV) |
/nh | テーブル・CSVCSV [シーエスブイ]Comma-Separated Values。カンマ区切りのデータ形式出力時にヘッダー行を非表示にする |
/? | ヘルプを表示する |
whoami /allの実行例
/allオプションを使うと、ユーザー名・SID・所属グループ・特権のすべてが一覧表示されます。
whoami /all権限に関するトラブルシューティングの際に、現在のユーザーにどのような権限が割り当てられているかをまとめて確認する場合に便利です。
whoami /privの実行例
/privオプションでは、現在のユーザーに割り当てられている特権の一覧と、その有効・無効の状態を確認できます。
whoami /privプログラムが「権限不足」で動作しない場合に、必要な特権が付与されているかを確認する際に活用できます。
まとめ
whoamiコマンドは、現在の実効ユーザー名を確認できるシンプルなLinuxコマンドです。suやsudoでユーザーを切り替えた後の確認や、シェルスクリプトでの権限チェックなど、実務でも頻繁に使用される基本的なコマンドです。
似たコマンドとしてwho am i(ログイン元のユーザーを確認)やid(UID・GID・グループの詳細を確認)がありますが、目的に応じて使い分けましょう。
ユーザー・権限管理コマンドのまとめ Linuxのユーザー管理や権限管理に関するその他のコマンドについては、以下のまとめ記事もあわせて参考にしてください。
ITナレッジライフ【Linux】ユーザー・権限管理コマンドまとめ
Linuxのユーザー管理(useradd, adduser, userdel)や権限管理(chmod, chown, sudo, umask)に関する必須コマンドを一覧で紹介。新規ユーザー作成からsudo権限の付与、再帰的なパーミッション変更まで、実務で役立つ使い方や実例を体系的にまとめています。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5

Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。