Sudo for Windows
Sudo for Windows は、ユーザーが Windows 上の昇格されていないコンソール セッションから直接、(管理者として) 昇格してコマンドを実行するための新しい方法です。
デモ ビデオと、Sudo for Windows のしくみの詳細については、告知をご覧ください。
前提条件
Sudo for Windows コマンドは、 Windows 11 バージョン 24H2 以降で使用できます。 (Windows 更新プログラムをご確認ください。)
Note
Sudo for Windows は、現時点では Windows 10 で使用できませんが、将来的には使用できる可能性があります。
Sudo for Windows を有効にする方法
Sudo for Windows を有効にするには、Settings > For Developers
を開き、[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>
は forceNewWindow
、disableInput
、または 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
コマンドは、他のユーザーとしてのプログラムの実行をサポートしていません。 これ以外に、sudo
と runas
には、主に次のような違いがあります。
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 で提供されていない追加機能をお探しの場合は、多数の追加機能と構成オプションが提供されている gsudo by Gerardo Grignoli をご覧ください。コミュニティで他のソリューションをチェックすることもできます。
Windows developer