whoami - 現在のユーザを確認する

スポンサーリンク

whoamiコマンドは現在のユーザを確認するコマンドになります。

つまり、コマンドはそのまま'Who am I?'(私は誰?)を意味するコマンドになります。

whoamiコマンドの利用例

現在のユーザを確認

whoamiコマンドは現在のユーザを確認するコマンドになります。例えば、ubuntuというユーザで実行すると'ubuntu'のようにユーザ名を表示します。

コマンド例

実行結果

 

また、whoamiコマンドは実際には実効ユーザIDで想定される名前を表示します。なので、ルート権限で実行した場合は、rootと表示されます。

コマンド例

実行結果

 

 

 

whoamiと等価なコマンド

whoamiコマンドは'id -un'と等価なコマンドになります。

コマンド例

実行結果

 

id - ユーザIDやグループIDを表示する
idコマンドは指定したユーザのユーザIDやグループIDを確認できます。 ユーザが指定されていない場合はこのidコマンドを実行しているプロセスのユーザIDやグループIDを確認できます。

 

 

 

(おまけ)whoamiプログラムで自分以外のユーザを表示してみる

chmodコマンドでプログラムに対して、SUIDビット(set-user-ID bit)という特別なアクセス権限を付与すると、そのプログラムの所有者の実効ユーザでプログラムを動作させることができます。

これを利用して、whoamiプログラムで自分以外のユーザの名前を表示します。

例えば、whoamiプログラムをカレントディレクトリにコピーし、chownコマンドで所有者情報をrootにし、chmodコマンドでSUIDビットを付与したwhoamiプログラムを用意します。

 

chmod - アクセス権限を変更する
chmodコマンドはファイルのアクセス権限を変更するコマンドです。 アクセス権限を変更することで、権限がないユーザがファイルの削除、書き換え、読み込み等を防ぐことができます。

 

これで、自分以外のユーザを表示するwhoamiプログラムができます。以下は通常のwhoamiプログラムとコピーしたwhoamiプログラムの実行結果になります。

コマンド例と実行結果

 

このような方法で、SUIDビットの動作で実効ユーザが変更される様子を確認することができます。

 

もっと詳しい動作については、whoamiコマンドで呼び出されるseteuid関数が参考になるかもしれません。

 

seteuid関数は、manコマンドでも確認することができます。

 

whatis - マニュアルページの名前から検索し概要を表示する
whatisコマンドは、マニュアルページの名前から検索してマニュアルページの簡単な概要を表示することができます。

 

 

 

参考

GNU Coreutils: whoami invocation