Sudo for Windows

Sudo for Windows は、ユーザーが Windows 上の昇格されていないコンソール セッションから直接、(管理者として) 昇格してコマンドを実行するための新しい方法です。

デモ ビデオと、Sudo for Windows のしくみの詳細については、告知をご覧ください。

前提条件

Sudo for Windows コマンドを使用するには、Windows 11 Insider Preview Build 26052 以上を実行している必要があります。 (Windows 更新プログラムをご確認ください。) Windows Insider Program への参加はこちら

Note

Sudo for Windows は、現時点では Windows 10 で使用できませんが、将来的には使用できる可能性があります。

Sudo for Windows を有効にする方法

Sudo for Windows を有効にするには、Settings > For Developers を開き、[sudo を有効にする][オン] に設定します。

Enable Sudo

警告

特定の構成で有効にした場合は、特権ベクトルの潜在的な昇格として Sudo for Windows を使用できます。 マシン上で sudo コマンドを有効にする際には、セキュリティに関する考慮事項に注意してください。

Sudo for Windows を構成する方法

Sudo for Windows では現在、3 つの異なる構成オプションがサポートされています。 構成は、Settings > For Developers メニューから設定することも、コマンド ラインを使用してプログラムで設定することもできます。 構成には以下のオプションがあります。

  • 新しいウィンドウを使用する (forceNewWindow): forceNewWindow 構成オプションは、Sudo for Windows の既定の構成オプションです。 コマンドを新しいウィンドウで実行するには、この構成で sudo を使用します。 これは、runas /user:admin コマンドの動作に似ています。

  • 入力を閉じる (disableInput): disableInput 構成オプションでは、昇格されたプロセスが現在のウィンドウで実行されます。入力ハンドルは閉じた状態です。 つまり、この昇格されたプロセスでは、現在のコンソール ウィンドウから入力を受け取ることができません。 このオプションは、管理者としてコマンドを実行する一方で、現在のコンソール ウィンドウからの入力をコマンドに渡したくない場合に便利です。 この構成オプションでは、inline構成オプションの利便性を活かしながら、関連するセキュリティ リスクを軽減できます。

  • インライン (normal): normal 構成オプションは、他のオペレーティング システムでの sudo の動作に最も似ています。 この構成では、昇格されたプロセスが現在のウィンドウで実行され、プロセスは現在のコンソール セッションから入力を受け取ることができます。 このオプションは、管理者としてコマンドを実行し、現在のコンソール ウィンドウからの入力をコマンドに渡したい場合に便利です。 この構成オプションは最も便利ですが、このオプションの使用は、関連するセキュリティ リスクに精通している場合のみに限定してください。

Settings > For Developers メニューを使用してこれらの構成の中から選択することも、管理者権限のコマンド ライン (管理コンソール) で次のコマンドを使用し、プログラムで構成を変更することもできます。

  • sudo config --enable <configuration_option>

<configuration_option>forceNewWindowdisableInput、または normal に置き換えてください。

Sudo for Windows を使用する方法

Sudo for Windows は、管理者として実行するコマンドの先頭に sudo を追加するだけで使用できます。 たとえば、netstat -ab を管理者として実行するには、コンソール ウィンドウで sudo netstat -ab を実行します。

sudo により、対象のプロセスが昇格され、管理者レベルのアクセス許可を使用して実行されるため、続行するかどうかを確認するプロンプトが開きます。

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

入力を閉じるオプション (inputClosed) やインライン オプション (normal) の構成での sudo の実行には、リスクがあります。 昇格されていない sudo.exe プロセスと昇格された sudo.exe プロセスによって確立された接続を、悪意のあるプロセスが使用して、管理者権限でプロセスを動作させようとする可能性があります。

inputClosed 構成オプションでは、入力ハンドルを閉じることでリスクが軽減されます。 現在のコンソール ウィンドウから入力ハンドルを切断すると、昇格されていないプロセスは昇格されたプロセスに入力を送信できません。

inline 構成オプションでは、昇格されたプロセスが現在のウィンドウで実行され、プロセスが現在のコンソール セッションから入力を受け取ることができます。 この構成では、昇格されていないプロセスが、昇格されたプロセスに同じコンソール ウィンドウ内で入力を送信することも、現在のウィンドウで出力から情報を取得することもできます。

よく寄せられる質問

Windows 用 Sudo と既存 runas のコマンドの違い

この sudo コマンドは、現在昇格されていないコマンド ライン コンテキストから、管理者としてのコマンド実行に簡単に昇格する方法として使用できます。他のオペレーティング システムを使用している一部のユーザーにとっては、馴染みのあるコマンドでもあります。 runas コマンドでは、管理者としての実行を含め、任意のユーザーとしてプログラムを実行する方法が提供されます。 一方、現時点で Windows 上の sudo コマンドは、他のユーザーとしてのプログラムの実行をサポートしていません。 これ以外に、sudorunas には、主に次のような違いがあります。

  • runas では、管理者を含む (管理者に限らず) 他のユーザーとしてプログラムを実行できます。 この機能は、sudo コマンドのロードマップに含まれているものの、現時点では存在しません。

  • sudo では、プロセスを簡単に (管理者としての実行に) 昇格できます。

    • これを新しいウィンドウで行うことも選択できます。これは、runas の管理者フローに似ています。
    • 構成オプションとして disableInput および normal を使用すると、昇格されたプロセスを現在のコンソール ウィンドウに接続できます。 これは、runas ではサポートされていません。
  • runas では、コマンドラインでユーザーにパスワードの入力を求めることができます。

  • sudo は、確認プロンプトの使用により、承認されていない変更からオペレーティング システムを保護するように設計されているユーザー アカウント制御 (UAC) セキュリティ機能のみを通じて昇格できます。

個々のユースケースを考慮して、ニーズに最も適したコマンドの使用を計画する必要があります。 また、sudo を inputClosed モードおよび normal モードで実行する場合のセキュリティへの影響も考慮する必要があります。 他の forceNewWindow 構成に関連するリスクに慣れている場合を除き、既定の sudo 構成オプションの使用をお勧めします。

Sudo for Windows オープン ソース リポジトリ

Sudo for Windows はオープン ソースです。皆様からのコントリビューションやフィードバックを歓迎いたします。 Sudo for Windows のソース コードについては、GitHub をご覧ください。

追加の機能

Sudo for Windows で提供されていない追加機能をお探しの場合は、多数の追加機能と構成オプションが提供されている Gerardo Grignoli 氏の gsudo をご覧ください。コミュニティで他のソリューションをチェックすることもできます。