MicrosoftはSudo for Windowsをリリースした。Sudo for Windowsは、ユーザーが未昇格のコンソールセッションから直接昇格コマンドを実行するために使われる。本記事ではSudoの設定方法などを紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2024年2月8日(米国時間)、「Windows11 Insider Preview Build26052」で「Sudo for Windows」をリリースした。Sudo for Windowsは、ユーザーが未昇格のコンソールセッションから直接昇格コマンドを実行するための手法だ。新しい管理コンソールを開くことなくコマンドを昇格させたいユーザーにとって、慣れ親しんだやり方を使用できるようになる。
Microsoftでは、このプロジェクトをGitHubでオープンソース化する予定だ。現在GitHubリポジトリにプロジェクトに関する情報を追加しており、2024年2月以降、数カ月のうちに詳細を発表するという。
WindowsでSudoを有効にするには、Windowsの設定から「For developers」に移動し、「Enable Sudo」をオンに切り替える。
管理コンソールセッションで次のコマンドを実行することでも有効化できる。
sudo config --enable <設定オプション>
Sudo for Windowsは現在3種類の設定オプションをサポートしている。
設定オプションを変更するには、「For developers」のドロップダウンメニューを使用する。
管理コンソールセッションで以下のコマンドを実行することでも、設定オプションを変更できる。
sudo config --enable <設定オプション>
これはデフォルトの設定オプションだ。Sudo for Windowsは新しい管理コンソールウィンドウを開き、そのウィンドウでコマンドを実行する。例えば、以下のコマンドで新しいウィンドウが開き、そのウィンドウでコマンドが実行される。
sudo netstat -ab
この設定では、Sudo for Windowsは現在のウィンドウで昇格プロセスを実行するが、新しいプロセスは標準入力を閉じた状態で生成される。つまり、新しいプロセスはユーザー入力を受け付けないので、この設定は昇格後にさらなるユーザー入力を必要とするプロセスには使えない。
この設定は他のOSのsudoの動作に最も似ている。この設定では、Sudo for Windowsはその標準入力、標準出力、標準エラー出力を全て現在のウィンドウに接続した状態で昇格プロセスを実行する。つまり、新しい昇格プロセスが入力を取り込み、出力を現在のウィンドウにルーティングすることができる。
sudoを使ってコマンドラインからプロセスを昇格させると、UAC(User Account Control)ダイアログが表示され、ユーザーに昇格の確認を求める。
ユーザーが昇格を確認すると、ユーザーが選択した設定オプションに基づいてプロセスが昇格する。コンソールでsudo -hを実行すると、sudoコマンドのオプションパラメーターを確認できる。
sudo.exeは新しい管理コンソールウィンドウを起動し、そのウィンドウでコマンドを実行する。新しいウィンドウは現在のウィンドウと同じ作業ディレクトリ、同じ環境変数で起動される。この設定はrunasコマンドと同じような流れになる。
sudo.exeは新しい昇格プロセスである昇格sudo.exeプロセスを起動し、元の昇格していないsudo.exeは新しい昇格プロセスとのRPC(Remote Procedure Call)接続を確立する。言い換えると、未昇格プロセスのコンソールハンドルが昇格プロセスに渡され、昇格プロセスは未昇格のプロセスから入力を読み、同プロセスに出力を書き込むということだ。しかし、sudoが「入力を閉じる」設定の場合、昇格プロセスは基本的にユーザーからの入力は読み取れない。
設定オプションを「インライン」または「入力を閉じる」でsudoを実行する場合、標準的なプロセスが昇格プロセスを動かす可能性があるため、セキュリティへの影響を認識しておくことが重要だ。「入力を閉じる」では、昇格プロセスがユーザーからの入力を読み取れないため、このリスクを軽減できる。
Microsoftは、今後数カ月間で、Sudo for Windowsのドキュメントを拡充し、sudoを「インライン」構成で実行することによるセキュリティへの影響について、より詳細な情報を共有するとしている。
Copyright © ITmedia, Inc. All Rights Reserved.