Microsoft、Windows 11に「Sudo」コマンドを追加したと発表。権限昇格がより簡単に

Windows

Microsoft、Windows 11に「Sudo」コマンドを追加したと発表。権限昇格がより簡単に

Microsoftは2月8日 (現地時間)、同社のPC向け最新OSのWindows 11に、LinuxやUnix系OSで広く利用されている「sudo」コマンドに似た新機能、「Sudo for Windows」を導入したと発表しました。「Sudo for Windows」はWindows 11 Insider Preview Build 26052から追加され、CanaryチャネルとDevチャネルでリリースされています。

Sudo for Windowsの特徴

「Sudo for Windows」はLinuxやUnix系のOSで使用される「sudo」コマンドに触発されたコマンドで、このコマンドを使用することで一時的に管理者権限へと昇格できます。従来は管理者権限で作業しなければいけない時には、管理者権限でコンソールを開き直す必要がありましたが、Sudo for Windowsを利用することで開き直さずとも管理者権限でコマンドが実行できるようになります。

また「Sudo for Windows」では「In a new window」(新しいウィンドウで開く)、「Input closed」(入力無効)、「Inline」(インライン)の3つの異なるモードが使用できます。

機能の有効化方法

Sudo for Windowsを利用するには、「設定」アプリから「システム」 > 「開発者向け」から「Sudoの有効化」オプションを切り替えるか、昇格されたコンソールセッションで以下のコマンドを実行することで有効にできます。

sudo config --enable <configuration_option>

設定オプションの詳細

前述の通り、「Sudo for Windows」には3つのモードがあります。

モード短い説明詳細
In a new window (forceNewWindow)新しいウィンドウで開くコマンドは新しい昇格されたコンソールウィンドウで実行されます。これは、sudoが有効になった際のデフォルト設定です。
Input closed (disableInput)入力無効新しいプロセスは現在のウィンドウで実行されますが、stdinが閉じられているため、ユーザー入力を受け付けません。
Inline (normal)インラインこの設定では、昇格されたプロセスが現在のウィンドウに接続され、入力の受付と出力の表示が可能になります。

3つのモードのうち「Inline」はLinuxやUnixで使用される「sudo」に大変近い挙動になりますが、Microsoftはセキュリティ的なリスクに繋がる可能性を指摘した上で、Windows for Sudo のドキュメントの拡充に取り組み詳細をまとめるとしました。

「Sudo for Windows」のプロセス階層と通信フロー

下図は、Windows上でsudo.exeを「Input Closed」と「Inline」設定で使用した場合のプロセス階層と通信フローを示しています。

ConDrv (Console Driver)コンソールとさまざまなプロセス間の通信を容易にするWindowsの基礎となるドライバ(コンソールドライバ)です。
Terminal Processユーザーがsudoコマンドを実行するコマンドラインインターフェース(CLI)です。(例: コマンドプロンプトやPowerShell)
CLI Shell (cmd, pwsh)シェルプロセスを表しており、ここでユーザーはコマンドを入力・実行します。
sudo.exe (1つ目)ユーザーがCLIシェルから開始した、昇格されていないsudo.exeのインスタンスです。
sudo.exe (2つ目)オリジナルのsudo.exeによって開始された、新しい昇格されたsudo.exeのインスタンスです。
netstat -abユーザーが昇格権限で実行しようとしているコマンドの例です。
RPC Connectionリモートプロシージャコール接続で、ネットワーク上の別のコンピュータにあるプログラムからサービスを要求するためにプログラムが使用するプロトコルです。ここでは昇格されていないsudo.exeと昇格されたsudo.exeのプロセス間の通信に使用されています。

「Inline」設定では、sudo.exeプロセスは昇格したsudo.exeプロセスとRPC接続を維持し、昇格していないプロセスと昇格したプロセスの間に直接的な入出力の流れがあります。これにより、ユーザーはオリジナルのシェルで実行されているかのように昇格されたコマンドと直接対話することができます。

一方で、「Input Closed」設定では、RPC接続が存在するものの、ConDrvからの入力が昇格されたsudo.exeプロセスには渡されません。これにより、昇格されたプロセスはユーザーからの対話型入力を受け入れることができず、非対話モードで実行されることになります。

まとめ

Windows 11における「Sudo for Windows」の導入は、開発者やシステム管理者にとって、より高度なコマンドライン操作を可能にし、Windowsの利用体験を一層向上させるものと期待されます。興味のある方は、ぜひこの新機能を試し、その可能性を探ってみてください。