Windows に追加された sudo の使い所を考えてみる

Windows に追加された sudo
最近の Windows には、sudo
コマンドが追加された。Linux では (BSD では?) 馴染みのあるコマンドであるが、かんたんに説明すると、「Windows において、管理者権限を事前に使えるようにするコマンド」である。
Windows では管理者権限を要求される際「ユーザー アカウント制御 (UAC)」というのが要求される。それを代わりに sudo
が要求して、sudo
が管理者権限としてアプリを使うよう手回ししてくれることで、アプリ自体がユーザー アカウント制御を出すことなく管理者権限を使うことができるようになる。
今回は、この sudo
コマンドの使いどころを考えてみた。
1. WinGet でアップデートを一括適用
まあこれが一番目玉なのではないか。WinGet でアップデートを適用するときは
winget upgrade --all
なのだが、アプリのインストーラー自体が管理者権限を求めてくるので毎回ユーザーアカウント制御が立ち上がる。そこで sudo
を使用してコマンドを実行すると、ユーザー アカウント制御は 1 回最初に許可するだけでよくなる。
sudo winget upgrade --all
あとはバックグラウンドでアプリが自動的にアップデートされていく。便利。
sudo winget upgrade --all; shutdown /s /f
これは「sudo の便利な使い方」ではないが、コマンドの次にほかのコマンドを実行できる ;
を使用すると、「アプリすべてのアップデートが終わったらシャットダウンする」というような使い方もできる。
2. 管理者権限じゃないと使えないコマンドを実行
あらかじめ言っておくが、Windows で管理者権限じゃないと使えないコマンド・プログラムの大半は、ユーザー アカウント制御を開いて管理者権限を要求する。そのためほとんどは sudo
不要だ。

それでもユーザー アカウント制御を出さないし管理者権限じゃないと中断・失敗するコマンドが少なからずある。例えば 「システム ファイル チェッカー」通称 sfc
コマンドはコマンド単体で実行すると「SFC ユーティリティを使うには、管理者でコンソール セッションを実行していなければなりません。」と言われてしまう。これに sudo
をつけると実行できる。
3. (あくまでも一例) hosts ファイルを編集
もしもウェブ開発者だったり、ネットワーク関係の作業をしたいときに、Windows でも hosts
ファイルを編集したい時があると思う。その場合、
notepad C:\Windows\System32\drivers\etc\hosts
というコマンドでメモ帳で hosts
ファイルを開ける。しかし、これはシステムのディレクトリにあるファイルなので、実際に編集して上書き保存する場合は、管理者権限が必要になる。
sudo notepad C:\Windows\System32\drivers\etc\hosts
このように sudo
コマンドを使用すれば、実際に hosts
ファイルを書き換えることができる。
まとめ : ぶっちゃけ、使いどころはそんなにない?
正直なことを言うと、Windows にはユーザー アカウント制御による管理者権限への昇格というのがアプリレベルで実装されている以上、sudo
が便利だと感じるシチュエーションは限られている。
使いどころがあるとすれば、管理者権限が必要なのにユーザー アカウント制御を出さないようなものか、何度も求めてくるようなアプリ・コマンドだと思う。それの代表例が WinGet による更新だろう。
ほかにも使いどころがあったら教えてほしい……。