【gsudo】Windowsで簡単にsudoする


Windowsでもsudo使いたいよね

個人的な結論:gsudoがおすすめ!

何がいいかというと、同じウィンドウ内で新しく管理者権限(スーパーユーザー)でシェル(PowerShell&Cmd)を開ける(新規ウィンドウが別に開かない)!

UNIX系のシェルみたい(BashとかZshとか)に同じウィンドウ/タブ上で権限を切り替えてコマンド操作できる!

名前の由来はGUIとsudo?

動画でどうぞ。

コマンドを入力した後、管理者権限に切り替えるためのユーザーアカウント制御画面で「はい」を選ぶと管理者権限でコマンドが実行されます。
(動画では確認画面はキャプチャされていませんが、実際は出ています)

事の経緯

最近、Windows上で開発するようになってPowerShellやCmdを使う機会が増えたのですが、LinuxとかMacみたいにターミナル上で管理者権限で操作するのがしんどいなと感じていました。

というのも、管理者権限に切り替えようとすると新規ウィンドウがいちいち立ち上がるから。

操作が終わったらウィンドウを閉じるか、最初から管理者権限でターミナルを起動すればいいんですが毎回やってると面倒くさく感じる。

特に最近はWindows Terminalで複数タブを開いて操作することが多いので、タブ内で操作を完結させたいという気持ちが強くなりました。(Windows Terminalはいいぞ)

自分でスクリプト書くのもだるいし、便利なパッケージないかなと調べたところgsudoを見つけました。管理者権限で操作するときにPowershellやCmdを新しく別ウィンドウで開きたくない人にはおすすめです。

ちなみに他にもWindows上でsudoする方法はいくつかありましたが、別ウィンドウで新しくシェルを開くタイプばかりでした。
(※全部試したわけではない)

ちなみにパッケージではないですが、下記で紹介されているスクリプトを実行すれば管理者権限のシェルを起動できます(ただし、これも別ウィンドウで開く)

インストール

インストールはパッケージマネージャー使ってもいいし、コマンドラインからも可能。

# scoop
scoop install gsudo
:: chocolatey
choco install gsudo
:: 環境変数を更新
refreshenv
# パッケージマネージャーなしの場合(非管理者権限で実行)
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"

使い方

管理者権限の必要なコマンド

インストールが済んだら、PowerShellでもCmdでも使えるようになります。使いたいコマンドの先頭にgsudoをつけて実行するだけ。コマンド実行後は非管理者権限(一般ユーザー)に戻ります。(bashやzshで一般ユーザーでsudo使うのと同じ)

# Chocolateyでgitをインストール
gsudo cinst git

管理者権限に切り替える

管理者権限(UNIX系でのroot)に切り替える場合はgsudoだけでOKです。exitでシェルを終了すれば前の一般ユーザーのシェルに戻ります。

# bashでいう`sudo su`に相当
gsudo
# 管理者権限のシェルで操作できる
rm test.txt
# 一般ユーザーに戻る
exit

快適なWindowsターミナルライフに一歩近づいた