0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sudo for Windows でカレントディレクトリを維持したまま新しい Windows Terminal を開きたい

Posted at

6 年前に投稿した PowerShell でも su とか sudo っぽいことをする という記事で sudo ライクなことをするための方法をご紹介しました。時は流れ 2024 年 10 月、Windows 11 24H2 にてついに公式で Sudo for Windows が搭載されました。設定アプリの [システム] - [開発者向け] から有効化することで利用可能になります。

sudo-setting.png

Sudo for Windows 標準の挙動としては、sudo <コマンド> を実行すると、新しいコンソールウィンドウが開いて、そのウィンドウで <コマンド> が実行される形になります。また、<コマンド> には PowerShell コマンドレットを直接指定できず、pwsh -Command で渡してあげる必要があります。

# 管理者権限で実行されているか確認する。
[System.Security.Principal.WindowsPrincipal]::new([System.Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)

# sudo をつけて実行する。末尾の Read-Host コマンドレットで実行を一時停止している。
sudo pwsh -Command "[System.Security.Principal.WindowsPrincipal]::new([System.Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator);Read-Host"

sudo-pwsh-new.gif

新しいウィンドウを開かずに特権を取得した PowerShell に切り替えたい

設定画面で インライン を選択するか、下記コマンドを実行することで sudo のモードを切り替えることができます。

sudo config --enable normal

この状態で以下コマンドを入力すると、Linux における sudo su - と似た使用感で特権を取得したシェルに切り替えられます。

sudo pwsh

sudo-pwsh-inline.gif

PowerShell コマンドレットも直接実行できていていい感じですね。ただし、ドキュメントではこのオプションを常用することのセキュリティリスクが説明されています:

昇格されていない sudo.exe プロセスと昇格された sudo.exe プロセスによって確立された接続を、悪意のあるプロセスが使用して、管理者権限でプロセスを動作させようとする可能性があります。
inline 構成オプションでは、昇格されたプロセスが現在のウィンドウで実行され、プロセスが現在のコンソールセッションから入力を受け取ることができます。 この構成では、昇格されていないプロセスが、昇格されたプロセスに同じコンソールウィンドウ内で入力を送信することも、現在のウィンドウで出力から情報を取得することもできます。 1

とはいえ、標準設定のまま sudo pwsh すると、古めかしいコンソールウィンドウが表示されてしまい嬉しくありません。どうせなら Windows Terminal で表示したいのが 2025 年の開発者体験というものです。どうしたものか。

sudo-pwsh-default.png

カレントディレクトリを維持したまま新しい Windows Terminal を開きたい

ただ sudo wt すると、カレントディレクトリが元ウィンドウから引き継がれません。そこで、以下のようにオプションを指定すると、特権を持ったウィンドウでもカレントディレクトリを維持したまま作業を継続できます。

sudo wt -d .

sudo-wt-new.gif

というわけで、結論としてはエクスプローラーや VSCode のカレントディレクトリを開く方法と同じ手をご紹介する記事になりました。よい PowerShell / Windows Terminal ライフを。

参考リンク

  1. https://learn.microsoft.com/ja-jp/windows/advanced-settings/sudo/#security-considerations

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?