Gsudo adalah sudo
yang setara dengan Windows, dengan pengalaman pengguna yang sama dengan sudo unix/linux asli. Memungkinkan Anda menjalankan perintah (atau meluncurkan kembali shell Anda saat ini) dengan izin tinggi, di jendela konsol saat ini atau yang baru.
Cukup prepend gsudo
(atau alias sudo
) ke perintah Anda dan itu akan berjalan tinggi. Untuk PowerShell Gunakan Sintaks ini: gsudo { ScriptBlock }
Satu popup UAC akan muncul setiap kali. Anda dapat melihat lebih sedikit sembulan jika Anda mengaktifkan cache GSUDO.
Ini mendeteksi cangkang Anda saat ini dan meningkatkan perintah Anda sebagai perintah shell asli. Cmd
PowerShell
WSL
git-bash
MinGW
Cygwin
Yori
Take Command
BusyBox
NuShell
Gsudo - Sudo untuk Windows
Penggunaan dari PowerShell / PowerShell Core
Penggunaan dari WSL (Subsistem Windows untuk Linux)
Modul PowerShell
Daftar isi
Demo
Fitur
Instalasi
Penggunaan
Konfigurasi
Cache kredensial
Masalah yang diketahui
FAQ
Harap dukung GSUDO! ?
Dokumentasi diperpanjang tersedia di: https://gerardog.github.io/gsudo/
(dengan gsudo config CacheMode auto
)
Perintah yang ditinggikan ditampilkan di konsol saat ini. Tidak ada jendela baru (kecuali Anda menentukan -n
)
CREDENSIONS CACHE: gsudo
dapat meningkatkan berkali-kali menunjukkan hanya satu pop-up UAC jika pengguna memilih untuk mengaktifkan cache.
Mendeteksi shell Anda saat ini (mendukung CMD
, PowerShell
, WSL
, Bash for Windows
(git-bash/mingw/msys2/cygwin), Yori
, Take Command
dan NuShell
), dan meningkatkan perintah Anda dengan benar.
Dukungan digunakan pada skrip:
Output Stdout /stderr dapat disalurkan atau ditangkap (mis. gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) dan kode keluar juga ( %errorlevel%
). Jika gsudo
gagal naik, kode keluar akan menjadi 999.
Jika gsudo
dipanggil dari konsol yang sudah ditinggikan, itu hanya akan menjalankan perintah (itu tidak akan gagal). Jadi, Anda tidak perlu khawatir jika Anda menjalankan gsudo
atau skrip yang menggunakan gsudo
dari konsol yang sudah ditinggikan. (Popup UAC tidak akan muncul, karena tidak ada ketinggian yang diperlukan)
gsudo !!
Meninggikan perintah yang dieksekusi terakhir. Bekerja pada CMD, Git-Bash, Mingw, Cygwin (dan PowerShell dengan modul gsudo saja)
Menggunakan scoop: scoop install gsudo
Menggunakan Winget: winget install gerardog.gsudo
Menggunakan cokelat: choco install gsudo
Menjalankan baris ini: (skrip):
PowerShell -Command "Set -ExecutionPolicy Remotesigned -Scope Process; [net.servicePointManager] :: SecurityProtocol = 'tls12'; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/mastergerg.installgoudo.gerardog.gsudo/mastergergox1"
Portabel:
Unduh gsudo.portable.zip
dari rilis terbaru
Ekstrak folder yang sesuai dengan arsitektur prosesor Anda (x64, x86, atau ARM64) dari file zip ke direktori yang sesuai di komputer Anda.
Secara opsional, tambahkan direktori itu ke variabel lingkungan jalur sistem Anda jika belum dapat diakses.
Harap restart semua jendela konsol Anda setelah menginstal untuk memastikan bahwa variabel lingkungan PATH
disegarkan.
Catatan: gsudo.exe
portabel. Tidak diperlukan layanan Windows atau perubahan sistem dilakukan, kecuali menambahkannya ke jalur.
GSUDO [Opsi] # Memulai shell Anda saat ini ElevatedGsudo [Opsi] {Command} [args] # runs {command} dengan 2STIONSGSUDO cache yang ditinggikan [on | OFF | Bantuan] # Mulai/Menghentikan Sesi Cache Kredensial. (Kurang popup UAC) Status gsudo [--json | Filter] # Menampilkan pengguna, cache, dan status konsol saat ini.gsudo !! # Menjalankan kembali perintah terakhir sebagai admin. (Ymmv)
Opsi Jendela Baru: -N | --New # Memulai perintah di konsol/jendela baru (dan segera kembali). -W | --wait # Saat di konsol baru, tunggu perintah untuk berakhir. --Keepshell # Setelah menjalankan perintah, jaga agar cangkang tetap terbuka. --KeepWindow # Setelah menjalankan perintah di konsol baru, mintalah keypress sebelum menutup Opsi Konsol/Window.security: -U | --User {USR} # dijalankan sebagai pengguna yang ditentukan. Meminta kata sandi. Untuk admin lokal menunjukkan UAC kecuali '-i medium' -I | --integrity {v} # Tentukan level integritas: tidak dipercaya, rendah, sedang, mediumplus, tinggi (default), sistem -s | --Sistem # dijalankan sebagai Akun Sistem Lokal (NT Authority Sysystem). --TI # dijalankan sebagai anggota NT ServiceTrustedInstaller -K # membunuh semua kredensial yang di -cache. Lain kali gsudo menjalankan popup UAC akan muncul. Opsi Terkait yang Berlaku: -D | --dengan Direksi # Melewati Deteksi Shell. Asumsikan cmd shell atau cmd {command}. --loadProfile # Saat mengangkat perintah PowerShell, muat profil pengguna. Opsi lain: --goLevel {val} # atur level log minimum untuk ditampilkan: semua, debug, info, peringatan, kesalahan, tidak ada --debug # Aktifkan mode debug. --COPYNS # Connect Network Drive ke pengguna yang ditinggikan. PERINGATAN: Verbose, interaktif meminta kredensial -CopyEV # (Tercamkan) Salin variabel lingkungan ke proses yang ditinggikan. (Tidak diperlukan pada mode konsol default) --chdir {dir} # ubah direktori saat ini ke {dir} sebelum menjalankan perintah.
Catatan: Anda dapat menggunakan di mana saja alias sudo
yang dibuat oleh installer.
Contoh:
GSUDO # Meninggikan shell saat ini di jendela konsol saat ini (mendukung CMD/PowerShell/Pwsh Core/Yori/Take Command/git -bash/cygwin) gsudo -n # Luncurkan shell saat ini yang ditinggikan dalam windowgsudo konsol baru -N -W PowerShell ./Do-something.ps1 # diluncurkan di jendela baru dan tunggu exitgsudo notepad %windir %system32driversetchosts # luncurkan windows appsudo notepad # sudo alias bawaan # redirect/input/output/output/error exextegsudo dir | findstr /c: "bytes free"> freespace.txt gsudo config loglevel "error" # configure redahir logginggsudo config prompt "$ p [ditinggikan] $ g" # Konfigurasikan promptgsudo config prompt yang ditinggikan khusus -Reset # reset ke nilai default # mengaktifkan cache kredensial (lebih sedikit popup UAC): GSUDO Config Cachemode Mobil
gsudo
mendeteksi jika diminta dari PowerShell dan mengangkat perintah PS (kecuali -d
digunakan untuk meningkatkan perintah CMD).
Perintah untuk meningkatkan akan berjalan dalam proses yang berbeda, sehingga tidak dapat mengakses $variables
dan cakupan induk.
Untuk meningkatkan perintah atau blok skrip: bungkus di {braces curly} .
# Sintaks: GSudo {ScriptBlock} gsudo [opsi] {scriptBlock} [-args $ argument1 [..., $ argumentn]];# contoh: gsudo {write-output "hello world"}# lulus argumen dengan -args $ mystring = "hello world" gsudo { Write-output $ args [0]} -args $ myString # output diserialisasi sebagai psObjects dengan properti. $ Services = gsudo {get-service 'wsearch', 'winmgmt'} Write-output $ services.displayname# Input juga: Contoh iterasi yang ditinggikan dari daftar .get-childitem. | gsudo {$ input.creationtime}
Sintaks alternatif:
# PASS Nilai (bukan variabel dengan referensi) dengan awalan `$ menggunakan:`. IE $ myString = "Hello World" Invoke-Gsudo {write-output $ menggunakan: myString} # Sintaks: Invoke-Gsudo [-ScriptBlock] <ScriptBlock> [[-ArgumentList] <object []]] [-InputObject <PsObject>] [-LoadProfile | -Noprofile] [-Credential <pscredential>]
- 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)
Penggunaan: Gsudo 'String Literal'# Substitusi Variabel Contoh: $ file = 'C: My Secret.txt'; $ algoritma = 'md5'; $ hash = gsudo "(get -filehash '$ file' -algorithm $ algorithm) .hash"# atau $ hash = gsudo "(get -filehash" "$ file" "-algorithm $ algoritma) . Hari "
Menerima string literal dengan perintah untuk meningkatkan.
Mengembalikan daftar string.
Opsional: Modul Impor gsudoModule.psd1
ke Profil PowerShell Anda:
# Tambahkan baris berikut ke modul impor $ profil Anda "gsudomodule"# atau jalankan: write-output "` nimport-module `" gsudomodule` "" | Add-Content $ Profile
Untuk melakukannya tambahkan baris ini ke profil Anda (setelah mengimpor gsudoModule
):
Set-alias prompt gsudoprompt
Jika Anda belum menyesuaikan prompt PowerShell Anda (misalnya dengan menginstal oh-my-post), Anda dapat dengan mudah menambahkan #
merah yang menunjukkan bahwa proses saat ini meningkat:
Test-IsGsudoCacheAvailable
returns true jika cache gsudo aktif (artinya ketinggian tanpa UAC dimungkinkan).
Test-IsProcessElevated
: Returns true jika proses saat ini meningkat.
Test-IsAdminMember
: Mengembalikan true jika pengguna saat ini adalah anggota kelompok Local Administrators
, yang berarti dapat ditinggikan dengan.
Menambahkan sintaks secara otomatis lengkap ke gsudo di PowerShell. Plus, ini menyarankan 3 perintah sebelumnya, membuat alur kerja Anda lebih halus dari sebelumnya!
Memungkinkan gsudo !!
di PowerShell, untuk meningkatkan perintah yang dieksekusi terakhir.
Menambahkan fungsi:
Pada WSL, ketinggian dan root
adalah konsep yang berbeda. root
memungkinkan pemberian penuh WSL tetapi bukan sistem Windows. Gunakan su
atau sudo
asli WSL untuk mendapatkan akses root
. Untuk mendapatkan hak istimewa admin di kotak Windows, Anda perlu meningkatkan proses WSL.exe. gsudo
memungkinkan (popup UAC akan muncul).
Di WSL Bash, prepend gsudo
untuk meningkatkan perintah WSL atau gsudo -d
untuk perintah CMD .
# Tinggikan shellpc default: ~ $ gsudo # Jalankan wsl commandpc yang ditinggikan: ~ $ gsudo mkdir/mnt/c/windows/myfolder# run windows commandpc yang ditinggikan: ~ $ gsudo -d notepad c:/windows/system32/driver/etc/hosts PC: ~ $ gsudo -d "notepad C: windowssystem32driverchosts"# tes untuk gsudo dan perintah successRetVal = $ ?; jika [$ retval -eq 0]; Thenecho "Success"; Elif [$ retval -eq $ ((999 % 256))]]; Kemudian # GSUDO Failure Exit Code (999) dibaca sebagai 231 di WSL (999 Mod 256) gema "Gsudo gagal meningkatkan!"; Perintah "elseCho" gagal dengan kode keluar $ retval "; fi;
GSUDO Config # Tampilkan Pengaturan & Nilai Konfigurasi Saat Ini. gsudo config {key} [--global] [value] # baca atau tulis pengaturan pengguna gsudo config {key} [--global] ---reset # reset konfigurasi ke nilai default --Global # memengaruhi semua pengguna (menimpa pengaturan pengguna)
Credentials Cache
, jika diaktifkan dan aktif, memungkinkan untuk meningkatkan beberapa kali dari proses induk dengan hanya satu pop-up UAC. Setelah 5 menit tanpa ketinggian, sesi cache ditutup secara otomatis (batas waktu yang dapat dikonfigurasi melalui gsudo config CacheDuration
).
Meskipun ini sangat nyaman, penting untuk memahami potensi risiko keamanannya. Bahkan jika Gsudo sendiri aman, kerentanan yang melekat terletak pada proses host. Jika sistem Anda sudah dikompromikan oleh proses jahat, ia dapat memanipulasi proses yang diizinkan (misalnya, CMD/PowerShell) dan memaksa instance cache Gsudo aktif untuk meningkatkan hak istimewa tanpa memicu prompt UAC.
Risiko ini adalah trade-off untuk menggunakan cache kredensial. Cache aman digunakan selama Anda yakin tidak ada proses jahat yang berjalan di sistem Anda.
Berikut adalah mode Credentials Cache
:
Explicit:
(default) Setiap ketinggian menunjukkan popup UAC, kecuali sesi cache dimulai secara manual ...
Untuk memulai atau menghentikan Sesi Cache Run: gsudo cache {on | off}
Ini adalah mode default. (Gunakan gsudo config CacheMode Explicit
untuk kembali ke nilai ini).
Auto:
Mirip dengan UNIX-Sudo. Ketinggian pertama menunjukkan popup UAC dan memulai sesi cache secara otomatis .
Jalankan gsudo config CacheMode Auto
untuk menggunakan mode ini.
Disabled:
Setiap ketinggian menunjukkan popup UAC, dan mencoba memulai sesi cache akan melakukan kesalahan ..
Jalankan gsudo config CacheMode Disabled
untuk menggunakan mode ini.
Bagaimanapun, Anda dapat menghentikan semua sesi cache dengan gsudo -k
.
Pelajari lebih lanjut
Instance yang ditinggikan tidak memiliki akses ke saham jaringan yang terhubung pada ruang yang tidak dielevasikan. Ini bukan masalah gsudo
tetapi bagaimana Windows bekerja. Gunakan --copyNS
untuk mereplikasi saham jaringan ke dalam sesi yang ditinggikan, tetapi ini bukan dua arah dan interaktif (dapat meminta pengguna/kata sandi).
gsudo.exe
dapat ditempatkan pada berbagi jaringan dan dipanggil sebagai serversharegsudo {command}
tetapi tidak berfungsi jika folder Anda saat ini adalah drive jaringan. Misalnya jangan memetakan servershare
ke Z:
dan kemudian Z:>gsudo do-something
.
Harap laporkan masalah di bagian masalah.
Mengapa bernama gsudo
bukan hanya sudo
?
Ketika saya membuat gsudo
, ada paket sudo
lain di sebagian besar manajer paket populer Windows seperti Chocolatey
dan Scoop
, jadi saya tidak punya pilihan lain untuk memilih nama lain. Pemasang gsudo
membuat alias untuk sudo
, jadi jangan ragu untuk menggunakan sudo
di baris perintah Anda untuk memohon gsudo
.
Mengapa Anda bermigrasi dari .Net Framework 4.6
ke .Net Core 7.0
?
Mulai dari v1.4.0, dibangun menggunakan .Net 7.0
Nativeaot. Memuat lebih cepat dan menggunakan lebih sedikit memori, dan berjalan pada mesin tanpa .NET runtime terpasang. Versi sebelumnya <v1.3.0
menggunakan .NET 4.6, karena termasuk dalam setiap instalasi Windows 10/11.
Apakah gsudo
port *nix sudo
?
Tidak. gsudo
mengingatkan sudo asli mengenai harapan pengguna. Banyak fitur sudo
adalah *nix
spesifik dan tidak akan pernah memiliki mitra Windows
. Fitur lain (seperti sudoers
) berpotensi diimplementasikan tetapi tidak pada titik ini.
Apa persyaratannya? Apakah itu bekerja di windows 7/8?
Ini bekerja pada Win7 SP1 dan seterusnya. Beberapa fitur mungkin hanya berfungsi di Windows 10/11, seperti mengangkat sebagai TrustedInstaller.
Bagaimana cara saya kembali ke tingkat keamanan sebelumnya setelah menggunakan gsudo?
Dengan cara yang sama seperti yang Anda lakukan dengan Unix/Linux sudo
: gsudo
tidak mengubah proses saat ini, sebaliknya meluncurkan proses baru dengan level izin/integritas yang berbeda. Untuk kembali ke level sebelumnya, akhiri saja proses baru. Untuk Command Prompt
atau PowerShell
cukup ketik exit
.
Tolong beri kami bintang!
Membantu menyebarkan berita dengan menyebutkan gsudo
di jejaring sosial!
Mensponsori atau menyumbang