水たまりは希望を写している

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

Windows の開発者向け設定の「sudo の有効化」がハイライトされているスクリーンショット。「窓 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 による更新だろう。

ほかにも使いどころがあったら教えてほしい……。

この記事を書いた人

AioiLight

Web とか Android とかをやってる人。アニメ・ゲームが好きなはずなのに消費しきれない毎日。

Twitter (@aioilight)