やじうまの杜
Windowsでもようやく利用できるようになった「Sudo」コマンドを早速体験
Linuxの「Sudo」とは似て非なるものだが快適。セキュリティレベルの低下には注意
2024年3月26日 13:46
「やじうまの杜」では、ニュース・レビューにこだわらない幅広い話題をお伝えします。
「Windows 11 Insider Preview」Build 26052(Canary/Dev)より展開されていた「Sudo」コマンドが、ようやく編集部の環境でも利用できるようになっていたのでさっそく試してみました。
Windowsの「Sudo」コマンド
Windowsでコマンドを実行すると、ときどき「管理者権限が必要」という旨のエラーメッセージが表示されます。Linuxであれば、指定したコマンドを別のユーザーでコマンドを実行する 「Sudo」 があるので、一時的に管理者になってコマンドの実行を継続することができます。しかし、Windowsには「Sudo」コマンドがないので、新たにターミナルを管理者権限で起動し、再度コマンドを実行する必要がありました。これは大変不便です。
実はWindowsにも 「RunAs」 というコマンドがあり、別のユーザーでコマンドを実行することはできます。しかし、単に管理者権限でコマンドを実行すると用途では少し書式が大袈裟で、「UAC」による権限昇格ではなく管理者(Administrator:初期状態では無効)のパスワードの入力が必要になる点、別ウィンドウでターミナルが起動する点などが不満として残ります。
その点、Windowsの「Sudo」コマンドは今のところ 「UACで一時的に権限昇格する」 という目的に絞って開発されており、とても簡単に利用できます。Linuxの「Sudo」コマンドとは似て非なるものですが、管理者権限が必要なとき一時的に権限昇格できるのは大変便利です。
ちなみに、Windowsの「Sudo」コマンドは「System32」フォルダー内の実行ファイルとして実装されています。コマンドの書式は以下の通りです。
sudo for Windows
Usage: sudo [OPTIONS] [COMMANDLINE]... [COMMAND]
Commands:
run 管理者としてコマンドを実行する
config sudo の現在の構成情報を取得する
help Print this message or the help of the given subcommand(s)
Arguments:
[COMMANDLINE]... 実行するコマンドライン
Options:
-E, --preserve-env 現在の環境変数をコマンドに渡す
-N, --new-window コマンドに新しいウィンドウを使用する
--disable-input ターゲット アプリケーションへの入力を無効にした状態で現在のターミナルで実行します
--inline 現在のターミナルで実行する
-D, --chdir <chdir> コマンドを実行する前に作業ディレクトリを変更してください
-h, --help 印刷のヘルプ ("--help" で詳細を表示)
-V, --version 印刷のバージョン
使い方
たとえば「PowerToys」をインストールするコマンドを管理者権限で実行したい場合、以下のように入力します。
sudo winget install powertoys -s winget
初回利用時はシステムで「Sudo」コマンドが有効ではないという旨のメッセージが表示されますが、案内に従って「設定」アプリの[システム]-[開発者向け]ページで「Sudo」コマンドを有効化すると、2回目からはコマンドが利用できるようになります。
Windowsの「Sudo」コマンドには、以下の3つのモードがあります。
- 新しいウィンドウで表示(In a new window、forceNewWindow):管理者権限のウィンドウが新たに開かれる(既定)
- 入力が無効な場合(With input disabled、disableInput):インラインで実行されるが、昇格プロセスと対話することはできない。このオプションは翻訳が正しくないため、いずれ変更されると思われる(サポートページでは「入力を閉じる」)
- インライン(Inline、normal):昇格をトリガーしたウィンドウ内でコマンドが管理者権限でインライン実行される
既定は「新しいウィンドウで表示」で、管理者権限のターミナルが別ウィンドウで表示され、コマンドが実行されます。ターミナルを管理者権限で起動しなおす必要はなくなりましたが、あまりスマートとは言えません。
「入力を閉じる」や「インライン」は、昇格されたプロセスが現在のウィンドウで実行されるため、よりLinuxに近い使い勝手になります。「入力を閉じる」と「インライン」の違いは、実行している管理権限コマンドと対話できるかどうか(入力ハンドルを閉じるかどうか)です。「インライン」ならば、ほぼLinuxのような体験が得られます。
ただし、「新しいウィンドウで表示」「入力を閉じる」「インライン」の順にセキュリティリスクは上がるとのこと。利便性とのトレードオフになります。また、Windows Serverでは「Sudo」コマンドはサポートされません。