Windows® 7 では、エンド ユーザー アカウントを標準のユーザー特権で簡単に実行できるメカニズムが用意され、管理者特権を持たないアカウントでも一般的なタスク (プリンター ドライバーのインストールやワイヤレス ネットワークへの接続など) を実行できるようになりました。この抜本的な変更は、悪意のあるソフトウェア (マルウェア) やルート キットが全社的なファイルや設定に損害を与えるのを防ぐことで、オペレーティング システム レベルでのセキュリティを提供します。

ユーザー アカウント制御 (UAC) は、最小限の特権のセキュリティ理論に基づいています。これは、割り当てられたタスクを実行するために絶対に必要な最小限の特権をユーザーに与えるという概念です。UAC と互換性のある UNIX ベース アプリケーション用サブシステムでの変更には、最小限の特権を持つユーザー アカウント (LUA) の使用が含まれます。

ユーザー アカウント制御

ユーザー アカウント制御は Windows 7 が備えるセキュリティ機能の 1 つで、Windows Vista から導入されたものです。

ユーザー アカウント制御の主な目的は、すべてのユーザーに標準のユーザー モードでの実行を要求し、承認されたプロセスへの管理者レベルのアクセスを制限することで、Windows 7 オペレーティング システムが危険にさらされる可能性や攻撃される可能性を抑えることです。この制限によって、コンピューターを不安定にしたり、コンピューターが感染したが検出されていない悪意のあるソフトウェアによってネットワークがウイルスにさらされたりする可能性のある変更を、ユーザーが行う権限が最小化されます。

既定では、現在のユーザーが Administrators グループのメンバーとしてログオンしている場合でも、Windows 7 ではすべてのアプリケーションが標準ユーザーとして実行されます。また Windows 7 では、管理者のアクセス許可が必要であるとマークされたアプリケーションをユーザーが起動しようとすると、実行の確認を求めるメッセージが表示されます。管理者特権によって実行されているアプリケーションのみがシステム全体の設定と動作を変更できます。

ユーザー アカウント制御の詳細については、Microsoft の Web サイトで、Windows Vista のユーザー アカウント制御に関する説明と構成方法のページ (英語の可能性あり) (https://go.microsoft.com/fwlink/?LinkId=70242) を参照してください。

UNIX ベース アプリケーション用サブシステムでのユーザー アカウント制御と最小限の特権

UNIX ベース アプリケーション用サブシステムのユーザーが Administrators グループのメンバーである場合、そのユーザーがアプリケーション、シェル、またはその他のタスクを起動すると、アプリケーションは標準ユーザーのセキュリティ コンテキストで実行されます。

次の例は、Administrators グループのメンバーであるユーザーが管理者特権を使用せずに管理タスクを実行するのを、ユーザー アカウント制御によって防ぐ方法を示しています。

ユーザー A は Administrators グループのメンバーであり、/ (ルート) ディレクトリに test という名前の新しいディレクトリを作成しようとしています。ルート ディレクトリに新しいディレクトリを作成できるのは、Administrators グループのメンバーのみです。ユーザー A は Administrators グループのメンバーですが、LUA の制限により、新しいディレクトリを作成することができません。ユーザー A が管理者特権で Korn シェルを開くと、ルートに test ディレクトリを作成できるようになります。

管理者特権でアプリケーションまたはタスクを実行するには、次の手順を参照してください。

管理者としてアプリケーションを実行する方法

UNIX ベース アプリケーション用サブシステムと、インストールされたツールおよびユーティリティのダウンロード パッケージを使用する場合、管理者としてアプリケーションを実行する方法は 2 つあります。

Windows のインターフェイスを使用する

UNIX ベースのコマンド ラインを使用する

Windows のインターフェイスを使用する

Windows のユーザー インターフェイスで、管理者特権が必要なアプリケーションを実行するには、次の手順を実行します。

Windows のインターフェイスで管理者としてアプリケーションを実行するには
  1. アプリケーションの実行可能ファイルを右クリックします。

  2. ショートカット メニューで、[管理者として実行] をクリックします。

UNIX ベースのコマンド ラインを使用する

UNIX ベースの Korn シェル環境で、管理者特権が必要なアプリケーションを実行するには、次の手順を実行します。

Korn シェルで管理者としてアプリケーションを実行するには
  1. [スタート] ボタン、[すべてのプログラム]、[UNIX ベース アプリケーション用サブシステム] の順にクリックし、[Korn シェル] をポイントします。

  2. [Korn シェル] を右クリックし、[管理者として実行] をクリックします。

  3. 管理者としてシェルを実行する許可を求めるメッセージが表示されたら、[はい] をクリックします。

  4. 管理者特権が必要なプログラムを実行します。

  5. 管理者特権が必要なアプリケーションの実行が完了したら、シェル セッションを閉じます。

    UNIX ベースのシェル環境で、管理者特権が不要なその他のタスクを実行する場合は、[管理者として実行] を使用せずに新しいシェル セッションを開きます。

EnableSuToRoot レジストリ キー

ユーザー アカウント制御は、既定では有効になっています。ユーザー アカウント制御が有効になっている場合は、アプリケーションやタスクが (sucronlogin の各ユーティリティ、setuid、または、setuid ファミリや exec_asuser ファミリの各種呼び出しなどの手段によって) たとえ Administrators グループのメンバーである別のユーザーに成りすましたとしても、常に標準ユーザー アカウントのセキュリティ コンテキストで実行されます。

アプリケーションが標準ユーザーを偽装している場合は、標準ユーザーの完全なセキュリティ コンテキストで実行されます。標準ユーザーの詳細については、Microsoft の Web サイトにある最小限の特権環境におけるアプリケーションの開発者用ヒント集およびガイドラインに関するページ (英語の可能性あり) (https://go.microsoft.com/fwlink/?LinkId=70243) を参照してください。

既定の設定では、アプリケーションはルート ユーザーを偽装できません。この動作は、レジストリ キー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SUA\EnableSuToRoot に変更を加えることで制御できます。

EnableSuToRoot レジストリ キーを変更する方法

重要

未承認のユーザーや悪意あるユーザーのアクセスからコンピューターとデータを保護するために、Windows 7 および Windows Server 2008 R2 では既定で Administrator アカウントが無効になっています。ユーザーが root ユーザーや Administrator に偽装するには Administrator アカウントが有効になっていることが必要です。先に Administrator アカウントを有効にしないと EnableSuToRoot レジストリ キーの設定は変更できないため、このタスクを実行するには次の手順に従う必要があります。この手順を実行するユーザーは、ローカル コンピューターの Administrators グループのメンバーである必要があります。

Administrator アカウントを有効にするには
  1. [スタート] ボタンをクリックし、[コンピューター] を右クリックして、[管理] をクリックします。

  2. [コンピューターの管理] スナップインの階層ウィンドウで、[ローカル ユーザーとグループ] を開きます。

  3. [ユーザー] を選択します。

  4. 結果ウィンドウで、[Administrator] を右クリックし、[プロパティ] をクリックします。

  5. [アカウントを無効にする] オプションのチェック ボックスをオフにします。

  6. [OK] をクリックします。

  7. [プロパティ] ウィンドウを閉じ、さらに [コンピューターの管理] スナップインを閉じます。

UNIX ベース アプリケーション用サブシステムをインストールした後、EnableSuToRoot レジストリ キーの設定を変更するには、次の手順を実行します。

EnableSuToRoot レジストリ キーの設定を変更するには
  1. [スタート] ボタンをクリックし、[検索の開始] ボックス内をクリックして「regedit」と入力し、レジストリ エディターを開きます。

  2. 階層ウィンドウで、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SUA を開きます。

  3. 結果ペインで、[EnableSuToRoot] をダブルクリックします。

  4. [値のデータ] ボックスで、ルート ユーザーの偽装を許可しない場合は「0」を入力し、許可する場合は「1」を入力します。

    既定の設定は 0 です。

  5. [OK] をクリックします。

  6. レジストリ エディターを終了し、メッセージに従って変更内容を保存します。

このキーの値が 0 (既定) に設定されていると、ルート ユーザーの偽装は許可されません。この値が 1 に設定されていると、ルート ユーザーの偽装が許可されます。アプリケーションがルート ユーザーまたは管理者のアカウントを偽装している場合、アプリケーションはルート (管理者) ユーザーの管理セキュリティ コンテキストで実行されます。

setuid と管理者特権

Administrators グループのメンバーであるユーザーがアプリケーションに setuid 属性を付加しようとしても、管理セキュリティ コンテキストでアプリケーションとタスクを実行することをそのユーザーが許可されていないと、操作は成功しません。

例として、バイナリ ファイル /bin/regpwdsetuid 属性を付加する場合の手順を次に示します。通常、このファイルにはこの属性が付加されています。

  1. このトピック内で説明したように、管理者特権で Korn シェル (ksh) を開きます。

  2. chmod +s /bin/regpwd」と入力し、Enter キーを押します。

  3. exit」と入力し、ksh セッションを閉じます。

関連項目