GSUDOはWindowsに相当するsudo
であり、元のUnix/Linux Sudoと同様のユーザー経験があります。現在のコンソールウィンドウまたは新しいウィンドウで、アクセス許可を使用してコマンド(または現在のシェルを再起動する)を実行できます。
gsudo
(またはsudo
エイリアス)をコマンドにPreadend Preadendだけで昇格させます。 PowerShellにはこの構文を使用してください: gsudo { ScriptBlock }
毎回1つのUACポップアップが表示されます。 GSUDOキャッシュを有効にすると、ポップアップが少なくなります。
現在のシェルを検出し、ネイティブシェルコマンドとしてコマンドを上げます。 ( Cmd
、 PowerShell
、 WSL
、 git-bash
、 MinGW
、 Cygwin
、 Yori
、 Take Command
、 BusyBox
& NuShell
をサポートしています。)
gsudo-窓用のsudo
PowerShell / PowerShell Coreからの使用
WSLからの使用(Linux用のWindowsサブシステム)
PowerShellモジュール
目次
デモ
特徴
インストール
使用法
構成
資格情報キャッシュ
既知の問題
よくある質問
GSUDOをサポートしてください! ?
拡張ドキュメントは、https://gerardog.github.io/gsudo/で入手できます。
( gsudo config CacheMode auto
を使用)
現在のコンソールには、昇格したコマンドが表示されます。新しいウィンドウはありません( -n
を指定しない限り)
資格情報キャッシュ: gsudo
ユーザーがオプトインしてキャッシュを有効にする場合、1つのUACポップアップのみを表示することができます。
現在のシェル( CMD
、 PowerShell
、 WSL
、 Bash for Windows
(git-bash/mingw/msys2/cygwin)、 Yori
、 Take Command
、 NuShell
)を検出し、コマンドを正しく上げます。
スクリプトで使用されるサポート:
出力stdout /stderrは、配管またはキャプチャできます(例: gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
)および出口コード( %errorlevel%
)。 gsudo
上昇しなかった場合、出口コードは999になります。
gsudo
がすでに昇格したコンソールから呼び出された場合、コマンドを実行するだけです(失敗しません)。したがって、 gsudo
実行したり、既に昇格したコンソールからgsudo
使用しているスクリプトを実行しても心配する必要はありません。 (標高は不要なため、UACポップアップは表示されません)
gsudo !!
最後に実行されたコマンドを高めます。 CMD、Git-Bash、MingW、Cygwin(およびGSUDOモジュールのみのPowerShell)で動作します
Scoopの使用: scoop install gsudo
Wingetの使用: winget install gerardog.gsudo
チョコレートの使用: choco install gsudo
この行を実行する:(スクリプト):
PowerShell -Command "Set -ExecutionPolicy Remotesigned -Scope Process; [net.ServicePointManager] :: securityProtocol = 'TLS12'; iWR -Useb https://raw.githubusercontent.com/gerardog/gsudo/mast
ポータブル:
最新リリースからgsudo.portable.zip
をダウンロードしてください
ZIPファイルからコンピューターの適切なディレクトリにプロセッサアーキテクチャ(x64、x86、またはARM64)に対応するフォルダーを抽出します。
オプションで、まだアクセスできない場合は、システムのPath環境変数にそのディレクトリを追加します。
インストール後にすべてのコンソールウィンドウを再起動して、 PATH
環境変数が更新されていることを確認してください。
注: gsudo.exe
はポータブルです。パスに追加することを除いて、Windowsサービスは必要ありません。
gsudo [options]#starts your shille shell releadedgsudo [options] {command} [args]#runs {command}を使用してunsedsgsudoキャッシュ[on |オフ|ヘルプ]#資格情報のキャッシュセッションを開始/停止します。 (Less UAC Popups)GSUDOステータス[--JSON |フィルター]#現在のユーザー、キャッシュ、コンソールステータスを表示します。 #adminとして最後のコマンドを再実行します。 (ymmv)
新しいウィンドウオプション:-n | -NEW#新しいコンソール/ウィンドウでコマンドを起動します(そしてすぐに返します)。 -w | -wait#新しいコンソールで、コマンドが終了するのを待ちます。 - キープシェル#コマンドを実行した後、高架シェルを開いたままにします。 -KeepWindow#新しいコンソールでコマンドを実行した後、コンソール/window.securityオプションを閉じる前にキープレスを求めてください:-u | -user {usr}#指定されたユーザーとして実行します。パスワードを求めます。地元の管理者の場合、「-i媒体」がない限りuACを示します -i | -integrity {v}#整合性レベルを指定:信頼できない、低、中程度、中数、高(デフォルト)、システム -s | - システム#ローカルシステムアカウント(NT AuthoritySystem)として実行します。 -ti#nt serviceTrustedInStallerのメンバーとして実行します -K#すべてのキャッシュされた資格情報を殺します。次にGSUDOが実行されるときは、UACポップアップが表示されます。シェル関連オプション:-D | - ディレクト#シェル検出をスキップします。 CMDシェルまたはCMD {コマンド}を仮定します。 -LoadProfile#PowerShellコマンドを伸ばすとき、ユーザープロファイルをロードするとき。その他のオプション: - loglevel {val}#最小ログレベルを表示して表示します:すべて、デバッグ、情報、警告、エラー、なし -Debug#デバッグモードを有効にします。 -COPYNS#ネットワークドライブを高架ユーザーに接続します。警告:verbose、インタラクティブな資格情報を要求します -Copyev#(非推奨)環境変数を上昇させたプロセスにコピーします。 (デフォルトのコンソールモードでは必要ありません) -chdir {dir}#コマンドを実行する前に、現在のディレクトリを{dir}に変更します。
注:インストーラーが作成したsudo
エイリアスをどこでも使用できます。
例:
GSUDO#現在のコンソールウィンドウの現在のシェルを高めます(CMD/PowerShell/PWSH Core/Yori/Take Command/Git -Bash/Cygwinをサポートします)GSUDO -N ./do-something.ps1#新しいウィンドウで起動してexitgsudo notepad%windir%windir%system32driversethosts#windows appsudo notepadを起動しますFindStr /C:「バイトフリー」> freespace.txt gsudo config loglevel "error"#configure reducted logginggsudo configプロンプト "$ p [heeleated] $ g"#configure configure configure configure configure configure configure自動
gsudo
、PowerShellから呼び出された場合に検出し、PSコマンドを上げます( -d
使用してCMDコマンドを上げない限り)。
昇格するコマンドは別のプロセスで実行されるため、親$variables
とスコープにアクセスできません。
コマンドまたはスクリプトブロックを昇格させるには: {Curly Braces}でそれを包みます。
#構文:gsudo {scriptblock} gsudo [options] {scriptblock} [-args $ argument1 [...、$ argumentn]];#example:gsudo {write output "hello world"}#args $ mystring = "hello world" gsudo { rething-output $ args [0]} -Args $ myString#出力はプロパティを備えたpsobjectsとしてシリアル化されています。 rething-output $ services.displayname#入力:list.get-childitemの繰り返しの例。 | gsudo {$ input.creationtime}
代替構文:
#「$を使用して」をプレフィックスすることにより、値(参照による変数ではありません)を渡します。 `。 IE $ myString = "Hello World" Invoke-gsudo {write-output $を使用:myString} #myntax:invoke-gsudo [-scriptblock] <scriptblock> [[-ArgumentList] <Object []>] [-inputObject <psobject>] [-LoadProfile | -Noprofile] [-credential <scredential>]
- PowerShell function. - Performs auto serialization of inputs & outputs. - You can prefix variables with the `$using:` scope modifier (like `$using:variableName`) and their serialized value is applied. - Use `-LoadProfile` or `-NoProfile` to override profile loading or not. - Use `-Credential` option for Run As User (same as `-u` but for `Get-Credentials`). - Better forwarding of your current context to the elevated instance (current Location, $ErrorActionPreference)
使用法:gsudo '文字列リテラル'#変数置換例:$ file = 'c:my secret.txt'; $ algorithm = 'md5'; $ hash = gsudo "(get -filehash '$ file' -algorithm $ algorithm).hash"#または$ hash = gsudo "(get -filehash" "$ file" "-algorithm $ algorithm) 。ハッシュ"
上昇するコマンドを使用して文字通りの文字列を受け入れます。
文字列のリストを返します。
オプション:モジュールgsudoModule.psd1
PowerShellプロファイルにインポートします。
#次の行を$プロファイルに追加するImport-Module "gsudomodule"#またはrun:write-output "` nimport-module `" gsudomodule` "" |追加コンテント$プロファイル
これを行うには、この行をプロファイルに追加します( gsudoModule
をインポートした後):
set-aliasプロンプトgsudoprompt
PowerShellプロンプトをまだカスタマイズしていない場合(たとえば、OH-My-PoSHをインストールして)、現在のプロセスが昇格していることを示す赤い#
を簡単に追加できます。
gsudoキャッシュがアクティブである場合、 Test-IsGsudoCacheAvailable
trueを返すことができます(UACのない標高を意味します)。
Test-IsProcessElevated
:現在のプロセスが上昇している場合、trueを返します。
Test-IsAdminMember
:現在のユーザーがLocal Administrators
グループのメンバーである場合、trueを返します。
PowerShellのGSUDOに構文自動コンプリートを追加します。さらに、以前の3つのコマンドを提案し、ワークフローをこれまで以上にスムーズにします!
gsudo !!
PowerShellで、最後に実行されたコマンドを高めます。
関数を追加します:
WSLでは、標高とroot
異なる概念です。 root
WSLの完全な管理を許可しますが、Windowsシステムは許可されません。 WSLのネイティブsu
またはsudo
使用して、 root
アクセスを取得します。 Windowsボックスで管理特権を取得するには、wsl.exeプロセスを昇格させる必要があります。 gsudo
それを許可します(UACポップアップが表示されます)。
WSL BASHでは、 gsudo
PREPENDしてWSLコマンドまたはgsudo -d
CMDコマンドに向上させます。
#デフォルトのshellpc:〜$ gsudoを伸ばします #エレベーティングWSLコマンドPCを実行:〜$ gsudo mkdir/mnt/c/windows/myfolder#run run relent windows commandpc:〜$ gsudo -d notepad c:/windows/system32/drivers/etc/hosts PC:〜$ gsudo -d "Notepad C:WindowsSystem32DriversEchterEchosts"#gsudoおよびcommand successretval = $?; if [$ retval -eq 0]; thenecho "success"; elif [$ retval -eq $((999%256)]]];次に、#gsudo故障Exitコード(999)がWSL(999 mod 256)で231として読み取られます。
gsudo config#現在の構成設定と値を表示します。 gsudo config {key} [ - global] [value]#ユーザー設定を読み書きまたは書き込み gsudo config {key} [--global] --reset#default値にconfigをリセットする -global#すべてのユーザーに影響を与えます(ユーザー設定をオーバーライド)
Credentials Cache
、有効でアクティブな場合、1つのUACポップアップのみで親プロセスから数回昇格することができます。標高なしで5分後、キャッシュセッションは自動的に閉じます( gsudo config CacheDuration
を介して構成可能なタイムアウト)。
これは非常に便利ですが、潜在的なセキュリティリスクを理解することが重要です。 GSUDO自体が安全であっても、固有の脆弱性はホストプロセスにあります。システムが既に悪意のあるプロセスによって侵害されている場合、許可されたプロセス(例えば、CMD/PowerShell)を操作し、アクティブなGSUDOキャッシュインスタンスにUACプロンプトをトリガーせずに特権を高めることができます。
このリスクは、資格情報キャッシュを使用するためのトレードオフです。キャッシュは、システムで実行されている悪意のあるプロセスがないと確信している限り、安全に使用できます。
これがCredentials Cache
モードです。
Explicit:
デフォルト)すべての標高は、キャッシュセッションが手動で開始されない限り、UACポップアップを示しています...
キャッシュセッションの実行を開始または停止するには: gsudo cache {on | off}
これはデフォルトモードです。 ( gsudo config CacheMode Explicit
を使用して、この値に戻す)。
Auto:
Unix-Sudoに似ています。最初の標高はUACポップアップを示し、キャッシュセッションを自動的に開始します。
gsudo config CacheMode Auto
を実行して、このモードを使用します。
Disabled:
標高ごとにUACポップアップが表示され、キャッシュセッションを開始しようとするとエラーが発生します。
gsudo config CacheMode Disabled
を実行して、このモードを使用します。
いずれにせよ、 gsudo -k
ですべてのキャッシュセッションを停止できます。
もっと詳しく知る
高されたインスタンスは、非標識スペースで接続されているネットワーク共有にアクセスできません。これはgsudo
問題ではなく、Windowsの仕組みです。 --copyNS
使用してネットワーク共有を高されたセッションに複製しますが、これは双方向ではなく、インタラクティブです(ユーザー/パスワードを求める場合があります)。
gsudo.exe
ネットワーク共有に配置し、 serversharegsudo {command}
として呼び出すことができますが、現在のフォルダーがネットワークドライブである場合は機能しません。たとえばZ:>gsudo do-something
servershare
Z:
にマッピングしないでください。
問題セクションの問題を報告してください。
なぜsudo
だけでなくgsudo
という名前が付けられているのですか?
gsudo
作成したとき、 Chocolatey
やScoop
などのほとんどのWindows人気パッケージマネージャーに他のsudo
パッケージがあったため、他の名前を選択する選択肢は他にありませんでした。 gsudo
インストーラーはsudo
のエイリアスを作成しますので、コマンドラインでsudo
を使用してgsudo
呼び出してください。
.Net Framework 4.6
から.Net Core 7.0
に移行したのはなぜですか?
v1.4.0から、 .Net 7.0
NativeAotを使用して構築されています。より速くロードされ、メモリが少なくなり、.NETランタイムがインストールされていないマシンで動作します。以前のバージョン<v1.3.0
は.NET 4.6を使用しています。これは、すべてのWindows 10/11のインストールに含まれていたためです。
gsudo
*nix sudo
の港ですか?
いいえgsudo
ユーザーの期待に関する元のSudoを思い出させます。多くのsudo
機能は*nix
固有であり、 Windows
カウンターパートを持つことはできません。他の機能( sudoers
など)は潜在的に実装される可能性がありますが、この時点ではありません。
要件は何ですか? Windows 7/8で動作しますか?
Win7 SP1以降に動作します。一部の機能は、TrustEdInstallerとして高くするなど、Windows 10/11でのみ機能する場合があります。
GSUDOを使用した後、以前のセキュリティレベルに戻るにはどうすればよいですか?
Unix/Linux sudo
: gsudo
現在のプロセスを変更せず、異なる権限/整合性レベルで新しいプロセスを起動します。前のレベルに戻るには、新しいプロセスを終了します。 Command Prompt
またはPowerShell
場合は、 exit
を入力します。
星をください!
ソーシャルネットワークでgsudo
に言及して、言葉を広めるのを手伝ってください!
スポンサーまたは寄付