3 ポイント 投稿者 GN⁺ 2024-02-09 | 1件のコメント | WhatsAppで共有
  • Windows 11 Insider Preview Build 26052 で Windows 向け Sudo の提供開始を発表
  • Windows 向け Sudo は、権限のないコンソール セッションから直接、昇格されたコマンドを実行できる新しい方法
    • もう "管理者として実行" を探す必要はない
  • GitHub でオープンソースとして公開
  • Windows 向け Sudo で提供されない追加機能が必要な場合は、Gerardo Grignoli の gsudo を確認することを推奨

Windows 向け Sudo を有効にする方法

  • Windows の設定にある「開発者向け」ページに移動し、「Sudo を有効にする」オプションをオンにすることで Windows 向け Sudo を有効化できる
  • または、昇格されたコンソール セッションで次のコマンドを実行して有効化できる: sudo config --enable

Windows 向け Sudo の構成方法

  • Windows 向け Sudo は現在 3 つの構成オプションをサポートしている: 新しいウィンドウで実行(forceNewWindow)、入力を無効化(disableInput)、インライン実行(normal)
  • 構成オプションを変更するには、Windows の設定にある「開発者向け」ページでドロップダウン メニューを使用するか、昇格されたコンソール セッションでコマンドを実行する

構成オプション 1: 新しいウィンドウで実行

  • この構成では、Sudo for Windows が新しい昇格済みコンソール ウィンドウを開き、そのウィンドウ内でコマンドを実行する
  • たとえば sudo netstat -ab を実行すると、新しいウィンドウが開いてその中でコマンドが実行される

構成オプション 2: 入力を無効化

  • この構成では、Sudo for Windows は現在のウィンドウで昇格されたプロセスを実行するが、新しいプロセスは stdin が閉じた状態で生成される
  • つまり、新しいプロセスはユーザー入力を受け付けないため、権限昇格後に追加の入力が必要なプロセスでは動作しない

構成オプション 3: インライン

  • この構成は、他のオペレーティング システムにおける sudo に最も近い動作をする
  • Sudo for Windows は、現在のウィンドウに接続された stdin、stdout、stderr を持つ状態で昇格されたプロセスを実行する
  • これは、新しい昇格済みプロセスが入力を受け取り、現在のウィンドウへ出力を送れることを意味する

仕組み

  • コマンドラインで sudo を使ってプロセスの権限を昇格させると、ユーザーに権限昇格を確認する UAC ダイアログが表示される
  • ユーザーが権限昇格を確認すると、ユーザーが選択した構成オプションに応じてプロセスが昇格される
  • sudo コマンドのオプション パラメーターを確認するには、コンソールで sudo -h を実行する

新しいウィンドウで実行

  • この構成では、sudo.exe は新しい昇格済みコンソール ウィンドウを開き、そのウィンドウでコマンドを実行する
  • 新しいウィンドウは、現在のウィンドウと同じ作業ディレクトリおよび環境変数で開始される
  • この構成は runas コマンドに似たフローを持つ

入力を無効化 と インライン

  • この構成では、sudo.exe は新しい昇格済みプロセスを開始し、昇格された sudo.exe プロセスを起動し、元の非昇格 sudo.exe は新しい昇格済みプロセスとの RPC 接続を確立する
  • つまり、非昇格の sudo インスタンスから昇格されたインスタンスへ情報が渡される
  • 特に、非昇格プロセスのコンソール ハンドルが昇格済みプロセスへ渡されるため、昇格済みプロセスは非昇格プロセスから入力を読み取り、非昇格プロセスへ出力を書き込める
  • ただし、「入力を無効化」構成では、昇格済みプロセスにコンソールの入力ハンドルが渡されないため、ユーザーからの入力を読み取ることはできない

次のステップ

  • チームは Windows 向け Sudo のオープンソース化を進めており、今後数か月以内に計画の詳細を共有する予定
  • GitHub リポジトリで直接フィードバックを共有してほしいと呼びかけている

GN⁺の意見:

  • Windows 向け Sudo の登場は、Windows ユーザーに Linux スタイルの権限管理体験を提供する重要な前進
  • このツールは、開発者がより効率的に作業できるよう支援し、オープンソース化によってコミュニティからの貢献も期待できる
  • セキュリティ面では「インライン」構成の使用に注意が必要であり、今後のドキュメント整備を通じて、こうしたセキュリティ上の問題についてさらに多くの情報が提供される予定という点が興味深い。

1件のコメント

 
GN⁺ 2024-02-09
Hacker Newsの意見
  • sudo コマンドが Windows に導入されつつある。これは Linux の sudo を単純に移植したものではなく、OS 間の権限構造の違いを考慮した新しい実装だ。同じターミナルウィンドウで管理者権限としてコマンドを実行できる体験を提供することが目標となっている。
  • PowerShell が curlwget をまったく別のコマンドに置き換えていた件と似た印象を受ける。引数に互換性がない点で問題になり得る。
  • Nirsoft の elevate はうまく動いていたが、システムにより統合された機能があるほうがよい。
  • sudo がほぼ一人によって保守されている点は興味深い。
  • sudo の優れた使い勝手について書きながら、Linux/Unix 系 OS に触れないのは奇妙だ。
  • Microsoft で働いていたとき、UAC (User Account Control) はセキュリティ境界とは見なされていなかった。この機能がどうやってリリースされたのか、あるいは今では UAC をセキュリティ境界と見なしているのか気になる。
  • psutilssudo.ps1scoop 経由でインストールして使っている。UAC プロンプトは出るが、対話的な作業には向いている。
  • 「Windows 12」が Linux ベースで動くウィンドウマネージャー + デスクトップになってほしい。Windows 95/7/8/10/11 との互換性を維持するために、既存のバグまで丁寧に再現することになるだろう。
  • PowerShell コマンドの方向性を考えると、この新しい sudo 実装は非常に複雑なコマンドになると予想される。
  • Windows で sudo が新機能として導入されたが、現時点ではセキュリティ的に脆弱に見える。時間とともに改善されていくだろう。