Windows Insider ProgramのCanary/Devチャンネル向けのWindows 11のプレビュービルド「Build 26052」では、Windows版sudoが導入されました。
sudoを利用することで、昇格した権限でコマンドを実行することが可能となりますが、従来のrunasとの違いが公式サポートドキュメント「Sudo for Windows」で説明されています。
FAQセクションの「Sudo for Windowsは既存のrunasコマンドとどう違うのですか?」という質問に対して、Microsoftは「sudoコマンドは管理者権限に素早く昇格させる方法で、runasコマンドは管理者を含む任意のユーザーとしてプログラムを実行する方法だ」と違いを説明しています。現時点では、Windowsのsudoコマンドは他のユーザーとしてプログラムを実行することをサポートしていないのです。
主な違いは以下の通りです:
- runasを使えば、管理者としてだけでなく、他のユーザーとしてプログラムを実行することができる。この機能はsudoコマンドのロードマップにあるがまだ存在しない。
- sudoを使えば、(管理者として)プロセスを素早く昇格させることができる。runasの管理者フローに似た新しいウィンドウで実行することも、昇格プロセスを現在のコンソール・ウィンドウに接続して実行することもできる(これはrunasではサポートされていない)。
- runasは、コマンドラインでユーザーにパスワードの入力を求めることができる。
- sudoは、検証プロンプトを使用して不正な変更からオペレーティングシステムを保護するように設計されたユーザーアカウント制御(UAC)セキュリティ機能によってのみ昇格することができる。
sudoの設定で「新しいウィンドウで表示」を選択している場合、sudoを実行すると、昇格した権限を持つコンソールウィンドウが起動し、そのウィンドウでコマンドが実行されます。
一方、「入力が無効な場合」や「インライン」を選択している場合、昇格していないsudo.exeプロセスが、昇格した権限を持つ新しいsudo.exeプロセスとRPC接続を作成し、昇格したsudo.exeがプログラムを実行します。
これは以下の図でも説明されています。
Microsoftは後者の設定はセキュリティ上のリスクも考慮する必要があるため、sudoに慣れ親しんでいない場合はrunasと似た使い勝手を実現する「新しいウィンドウで表示」を使用することを推奨しています。