Windows Insider ProgramのDevチャンネル(およびCanaryチャンネル)でプレビュー中のWindows 11 Ver.24H2には、sudo.exeコマンドが搭載されている。簡単に言えば、sudo.exeとは管理者権限でコマンドを実行するためのものだ。今回は、このsudo.exeを試した。
そもそもsudoとはなんぞや?
sudoは、Linuxに搭載されているコマンドで、他のユーザーID、グループIDを使って指定されたコマンドを実行するためのものだ。特にオプションを指定せず、sudoのあとに実行したいコマンドを続けると、root(Linux/Unixの管理者)としてコマンドを実行する。このとき、rootのパスワードを入力する必要があるが、sudoがパスワードを一時的に記憶して、しばらくの間はパスワードの再入力は必要がなくなる。
Linuxでは、多くの管理・設定コマンドに管理者権限が必要になる。もともと、Unixには、su(Super Userの略)コマンドがあり、一時的にroot(管理者ユーザー)になって作業をしていた。このコマンドは、Version 1 Unix(1971年)から存在するコマンドである。しかし、suコマンドでは、ミスをしたときにroot権限であるため、大きな事故になりかねない。そこで、指定した単独のコマンドだけをroot権限で実行するsudoが、1980年代に4.1 BSD UNIX上で、ニューヨーク州立大学バッファロー校において最初に開発された。
今回、Windowsに搭載されたsudoは、コンセプトとしては同じだが、UnixやLinux上のsudoとは異なり、ほかのユーザーでコマンドを実行するものではない。というのも、Windowsにはユーザーアカウント制御(User Account Control。UAC)という機能があり、管理者ユーザーであったとしても、コマンドの実行は通常ユーザーと同じ権限でしか実行できないからだ。
管理者権限を使ってコマンドを実行するには「昇格」する必要がある。アプリケーションのインストールなどで、ユーザーに許可を求めるメッセージボックスが表示される。これがUACの「昇格」の確認のための「通知」(UAC通知)である。このとき画面が反転し、UACの通知だけが表示されるのは、悪意のあるプログラムがマウスやキーボードを制御してメッセージボックスを操作することを避けるためだ。
UAC通知に関しては「コントロールパネル」→「ユーザーアカウント」→「ユーザーアカウント制御の変更」で設定が可能だが、基本的には変更しないほうがよい。
「昇格」は、GUIアプリケーションなどがAPIを使って要求することができる(もちろんユーザーによる許可が必要)ほか、スタートメニューなどで一部のコマンドが持つ右クリックメニューの「管理者として起動」を使う。コマンドラインの場合、コンソール自体を管理者として起動し、その中で作業する。これは前述のsuとほぼ同じ状態である。
Windowsに搭載されたsudo.exeは、昇格によって指定されたコマンドを実行するものだ。このため、ユーザーは実行ユーザーのままになる。
なおWindowsには、sudoとよく似たrunasというコマンドがある。これは、ユーザーを切り替えてコマンドを実行するものだが、Windows VistaでUACが導入されて以来、管理者ユーザーを指定しても、コマンドの実行は一般ユーザー権限となってしまうため、管理者権限が必要なコマンドの実行ができなかった。
実際にsudo.exeを使う
sudo.exeを使うには、Windows Insider ProgramのCanary、Devチャンネルで配布されている「ビルド26052」(https://blogs.windows.com/windows-insider/2024/02/08/announcing-windows-11-insider-preview-build-26052-canary-and-dev-channels/、2024年2月8日配布開始)以降が必要である。
原稿執筆時点のDev/Canaryチャンネルの最新版は、「ビルド26058」(https://blogs.windows.com/windows-insider/2024/02/14/announcing-windows-11-insider-preview-build-26058-canary-and-dev-channels/)である。このビルドには、sudo ver.0.1.5が搭載されていた。
まず、「設定」→「システム」→「開発者向け」→「sudoの有効化」でsudoコマンドを有効にする。
このときに「sudoによるアプリケーションの実行方法を構成する」で、sudoで実行するコマンドの実行方法を指定できる。Linuxのように使うには「インライン」を選ぶ。そのほかに「入力が無効な場合」「新しいウィンドウで表示」の2つが選択でき、この順でセキュリティが高くなる。
「入力が無効な場合」とは、実行されるコマンドに対して標準入力(stdin)を閉じた状態(入力を禁止した状態)で起動される。英語では「With Input disabled」なので日本語訳がおかしく、意味としては「入力を禁止」である。この設定は起動後にユーザー入力を受け付けるようなコマンドの利用には向いていない。プログラムを停止するための「Ctrl+C」などは標準入力を通らないために有効である。
デフォルト値の「新しいウィンドウで表示」がセキュリティ的には最も高く、起動するコマンドは、別ウィンドウとなる。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ