WindowsのwhoamiコマンドでユーザーのSIDや権利を調査するTech TIPS

whoamiコマンドを使うと、ユーザーや所属するグループのSIDを表示できる。whoamiでは、ユーザーに割り当てられている権利を表示できる。

» 2010年06月11日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows XP/Windows Server 2003/Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2



解説

 Windows OSでは、ユーザーがログオンすると、そのログオン・アカウントに対して、さまざまな「権利」が与えられる。例えば、「システムをシャットダウンする権利」「ファイルにアクセスする権利」「ターミナル・サービスにログオンする権利」など、数多くある。この権利は、例えば[管理ツール]の[ローカル セキュリティ ポリシー]ツールなどで確認できる。Usersグループに属するユーザーが、Administratorsグループのユーザーよりも可能な操作が限定されているのは、利用できる権利が少ないからである。Windows OSのセキュリティ機構がどのようになっているかについては、以下の記事を参照していただきたい。管理者権限のあるアカウントで使用することが一般化してしまったWindows OSにおいて、管理者アカウントを有効にしながらも、不正な操作からシステムを保護するために導入されたUACについても解説している。

 権限の不足などでプログラムが実行できない場合、その原因を探るためには、今ログオンしているユーザーに対して実際にどのような権利が与えられているかを調査する必要がある。この調査に利用できるのがwhoami.exeというコマンドである。本TIPSではこのコマンドの基本的な使い方について解説する。

操作方法

 whoami.exeはWindows Server 2003/Windows Vista以降に標準でインストールされているコマンドである。Windows XPの場合はサポート・ツールに含まれているが、一部機能が不足しているので(詳細は上の基礎解説記事を参照)、可能ならWindows Server 2003に含まれるものを利用するとよいだろう。

 whoamiでは、次の3つの情報を表示できる。1つ目は現在ログオンしているユーザー名(正確に言うと、whoamiのプロセスに対して割り当てられている「トークン」の所有者。トークンについても前出の記事参照)、2つ目はそれに関連付けられているグループ名、そしてログオンしているアカウントに対して割り当てられている権限である。それぞれ「/user」「/groups」「/priv」オプションで表示できるが、「/all」で3つすべてをまとめて表示できる。

C:\>whoami /?  ……ヘルプの表示(これはWindows 7の例)

WhoAmI の使用法は 3 とおりあります:

構文 1:
    WHOAMI [/UPN | /FQDN | /LOGONID]

構文 2:
    WHOAMI { [/USER] [/GROUPS] [/PRIV] } [/FO 形式] [/NH]

構文 3:
    WHOAMI /ALL [/FO 形式] [/NH]

説明:
    このユーティリティを使用して、ユーザー名とグループの情報、および
    それぞれのセキュリティ ID (SID)、特権、ローカル システム上で現在
    ログオンしている現在のユーザー (アクセス トークン) のログオン ID
    (たとえば、現在ログオンしているユーザー) を取得できます。
…(以下省略)…



 パラメータを付けずに実行すると、現在ログオンしているユーザー・アカウント名が表示されるが、「whoami /user」とすると、ユーザー名とSIDが表示される(SIDについてはTIPS「オブジェクトを識別するSIDとは?」参照)。

ユーザー名とSIDの表示 ユーザー名とSIDの表示
/userオプションを付けると、現在のユーザー名とそのSIDが表示される。正確に言うと、このwhoamiコマンドを実行しているプロセスに対して割り当てられているトークンの所有者の情報が表示されている。
  (1)ユーザー名。
  (2)SID文字列。

 「/group」を付けると、現在のユーザーのグループ情報、SID、アカウントの種類、セキュリティ・グループ属性などが表示される。

グループ情報の表示 グループ情報の表示
/userオプションを付けると、現在のユーザーのグループ情報、SID、アカウントの種類、セキュリティ・グループ属性などが表示される。
  (1)トークンに割り当てられているグループ情報。
  (2)グループの種類。
  (3)グループのSID。
  (4)グループの属性。これはトークンのACL(アクセス制御リスト)で利用される。詳細は先の記事参照。

 「/priv」を付けると、現在のユーザーに対して割り当てられている権限(特権)の一覧が表示される。以下はWindows 7における表示例である。管理者権限のあるユーザーでログオンしているが、5つの権利しか割り当てられていない。これはUACによる保護メカニズムのおかげであり、ユーザーが知らないうちに特権を使用したり、(ウイルスなどによって)システムが不正に変更されたりするのを防いでいる。

権限の表示 権限の表示
[スタート]メニューから起動したコマンド・プロンプト上でwhoamiコマンドを実行したところ(UACによる許可は行っていない)。管理者権限のあるユーザーとしてログオンしているが、UACによって権利が制限され、一般ユーザーと同程度のことしか実行できない。
  (1)特権名。ここでは5つしか許可されていない。
  (2)特権の説明。
  (3)この有効/無効状態は、特権の許可/拒否ではない。詳細は先の記事を参照のこと。

 同じコマンドを管理者として実行したコマンド・プロンプト上で実行してみると(つまりUACによるプロンプトに対して明示的に許可してから実行すると)、次のようになる。利用可能な権利の種類が増えていることが分かるだろう。これは従来のUACのないWindows OSにおいて、管理者権限のあるアカウントでログオンしている場合と同じ状況である。

管理者として実行された場合の権限の表示 管理者として実行された場合の権限の表示
管理者として実行されているコマンド・プロンプトでは、より多くの権利が付与されているため、より多くの特権的な操作が可能になっている。UACが導入される前のWindows OSでは、管理者権限のあるユーザー・アカウントでログオンするとすぐにこのような権利が与えられていたため、間違って操作したり、ウイルスなどによってシステムが破壊される可能性があった。UACが有効な場合は、ユーザーが明示的に許可操作を行わない限り、このような権利が割り当てられなくなっている。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。