GSUDO เป็น sudo
เทียบเท่ากับ Windows โดยมีประสบการณ์ผู้ใช้ที่คล้ายกันกับ Unix/Linux Sudo ดั้งเดิม ช่วยให้คุณเรียกใช้คำสั่ง (หรือเปิดใหม่เชลล์ปัจจุบันของคุณ) ด้วยสิทธิ์ที่สูงขึ้นในหน้าต่างคอนโซลปัจจุบันหรือใหม่
เพียงเตรียม gsudo
(หรือนามแฝง sudo
) ให้กับคำสั่งของคุณและมันจะเพิ่มขึ้น สำหรับ PowerShell ใช้ไวยากรณ์นี้: gsudo { ScriptBlock }
ป๊อปอัพ UAC หนึ่งตัวจะปรากฏขึ้นในแต่ละครั้ง คุณสามารถดูป๊อปอัปน้อยลงหากคุณเปิดใช้งาน GSUDO Cache
มันตรวจพบเชลล์ปัจจุบันของคุณและยกระดับคำสั่งของคุณเป็นคำสั่งเชลล์ดั้งเดิม (รองรับ Cmd
, PowerShell
, WSL
, git-bash
, MinGW
, Cygwin
, Yori
, Take Command
, BusyBox
& NuShell
)
gsudo - sudo สำหรับ windows
การใช้งานจาก PowerShell / PowerShell Core
การใช้งานจาก WSL (ระบบย่อย Windows สำหรับ Linux)
โมดูล PowerShell
สารบัญ
การสาธิต
คุณสมบัติ
การติดตั้ง
การใช้งาน
การกำหนดค่า
แคชข้อมูลรับรอง
ปัญหาที่รู้จัก
คำถามที่พบบ่อย
กรุณาสนับสนุน GSUDO! -
เอกสารเพิ่มเติมที่มีอยู่ที่: https://gerardog.github.io/gsudo/
(พร้อม gsudo config CacheMode auto
)
คำสั่งยกระดับจะแสดงในคอนโซลปัจจุบัน ไม่มีหน้าต่างใหม่ (เว้นแต่คุณจะระบุ -n
)
แคชแคช: gsudo
สามารถยกระดับได้หลายครั้งที่แสดงเฉพาะป๊อปอัพ UAC เพียงหนึ่งเดียวหากผู้ใช้เลือกใช้เพื่อเปิดใช้งานแคช
ตรวจจับเชลล์ปัจจุบันของคุณ (รองรับ CMD
, PowerShell
, WSL
, Bash for Windows
(git-bash/mingw/msys2/cygwin), Yori
, Take Command
และ NuShell
) และยกระดับคำสั่งของคุณอย่างถูกต้อง
รองรับการใช้กับสคริปต์:
เอาต์พุต stdout /stderr สามารถ piped หรือถูกจับ (เช่น gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) และรหัสออกด้วย ( %errorlevel%
) หาก gsudo
ล้มเหลวในการยกระดับรหัสออกจะเป็น 999
หาก gsudo
ถูกเรียกใช้จากคอนโซลที่ยกระดับแล้วมันจะเรียกใช้คำสั่ง (มันจะไม่ล้มเหลว) ดังนั้นคุณไม่ต้องกังวลถ้าคุณเรียกใช้ gsudo
หรือสคริปต์ที่ใช้ gsudo
จากคอนโซลที่ยกระดับแล้ว (ป๊อปอัพ UAC จะไม่ปรากฏขึ้นเนื่องจากไม่จำเป็นต้องมีระดับความสูง)
gsudo !!
ยกระดับคำสั่งที่ดำเนินการล่าสุด ทำงานกับ CMD, Git-Bash, Mingw, Cygwin (และ PowerShell ด้วยโมดูล GSUDO เท่านั้น)
ใช้ 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/master/installgsudo.predo.
พกพา:
ดาวน์โหลด gsudo.portable.zip
จากรุ่นล่าสุด
แยกโฟลเดอร์ที่สอดคล้องกับสถาปัตยกรรมโปรเซสเซอร์ของคุณ (x64, x86 หรือ ARM64) จากไฟล์ zip ไปยังไดเรกทอรีที่เหมาะสมบนคอมพิวเตอร์ของคุณ
ทางเลือกเพิ่มไดเรกทอรีนั้นลงในตัวแปรสภาพแวดล้อมเส้นทางของระบบของคุณหากยังไม่สามารถเข้าถึงได้
โปรดรีสตาร์ทหน้าต่างคอนโซลทั้งหมดของคุณ หลังจากการติดตั้งเพื่อให้แน่ใจว่าตัวแปรสภาพแวดล้อม PATH
ได้รับการรีเฟรช
หมายเหตุ: gsudo.exe
เป็นแบบพกพา ไม่จำเป็นต้องใช้บริการ Windows หรือการเปลี่ยนแปลงระบบยกเว้นการเพิ่มลงในเส้นทาง
GSUDO [ตัวเลือก] # เริ่มต้นเชลล์ปัจจุบันของคุณ ElevatedGSUDO [ตัวเลือก] {คำสั่ง} [args] # runs {command} พร้อมแคช PermissionsGsudo ยกระดับ [บน | ปิด | วิธีใช้] # เริ่มต้น/หยุดเซสชันแคชข้อมูลรับรอง (ป๊อปอัพ UAC น้อยกว่า) สถานะ GSUDO [-JSON | ตัวกรอง] # แสดงผู้ใช้ปัจจุบันแคชและสถานะคอนโซล GSUDO !! # เรียกใช้คำสั่งสุดท้ายอีกครั้งในฐานะผู้ดูแลระบบ (ymmv)
ตัวเลือกหน้าต่างใหม่: -n | -ใหม่ # เริ่มต้นคำสั่งในคอนโซล/หน้าต่างใหม่ (และส่งคืนทันที) -w | -รอ # เมื่ออยู่ในคอนโซลใหม่รอให้คำสั่งสิ้นสุด -Keepshell # หลังจากเรียกใช้คำสั่งให้เปิดเชลล์ยกระดับ -KeepWindow # หลังจากเรียกใช้คำสั่งในคอนโซลใหม่ให้ขอคีย์นิพจน์ก่อนปิดคอนโซล/หน้าต่างตัวเลือกความปลอดภัย: -U | -ผู้ใช้ {usr} # เรียกใช้เป็นผู้ใช้ที่ระบุ ขอรหัสผ่าน สำหรับผู้ดูแลระบบในท้องถิ่นแสดง UAC เว้นแต่ '-i Medium' -I | -integrity {v} # ระบุระดับความสมบูรณ์: ไม่น่าเชื่อถือ, ต่ำ, ปานกลาง, ปานกลาง, สูง (ค่าเริ่มต้น), ระบบ -S | -ระบบ # เรียกใช้เป็นบัญชีระบบท้องถิ่น (NT Authority AuthoritySystem) -TI # Run ในฐานะสมาชิกของ NT ServiceTrustedInstaller -k # ฆ่าข้อมูลประจำตัวที่แคชทั้งหมด ครั้งต่อไป GSUDO จะเรียกใช้ UAC Popup จะปรากฏขึ้นตัวเลือกที่เกี่ยวข้องกับ Shell: -D | -การตรวจจับ Shell Skips สมมติว่าเชลล์ cmd หรือ cmd {command} -LoadProfile # เมื่อยกระดับคำสั่ง PowerShell, โหลดโปรไฟล์ผู้ใช้ตัวเลือกอื่น ๆ :-Loglevel {val} # ตั้งระดับบันทึกขั้นต่ำเพื่อแสดง: All, Debug, ข้อมูล, คำเตือน, ข้อผิดพลาด, ไม่มี -DEBUG # เปิดใช้งานโหมดการดีบัก -Copyns # เชื่อมต่อไดรฟ์เครือข่ายกับผู้ใช้ที่ยกระดับ คำเตือน: Verbose, Interactive ขอข้อมูลรับรอง -COPYEV # (เลิกใช้แล้ว) ตัวแปรการคัดลอกสภาพแวดล้อมไปยังกระบวนการยกระดับ (ไม่จำเป็นในโหมดคอนโซลเริ่มต้น) -Chdir {dir} # เปลี่ยนไดเรกทอรีปัจจุบันเป็น {dir} ก่อนที่จะเรียกใช้คำสั่ง
หมายเหตุ: คุณสามารถใช้ทุกที่ที่ sudo
นามแฝง ที่สร้างขึ้นโดยผู้ติดตั้ง
ตัวอย่าง:
GSUDO # ยกระดับเชลล์ปัจจุบันในหน้าต่างคอนโซลปัจจุบัน (รองรับ CMD/POWERSHELL/PWSH CORE/YORI/ใช้คำสั่ง/git -bash/cygwin) GSUDO -N # เปิดตัวเชลล์ปัจจุบันที่ยกระดับในคอนโซล WindowgSudo -N -W Powershell ./do-something.ps1 # เปิดตัวในหน้าต่างใหม่และรอ Exitgsudo Notepad %Windir %System32DriversetCots # เปิดใช้งาน Windows AppSudo Notepad # Sudo Alias ในตัว # เปลี่ยนเส้นทาง/ท่ออินพุต/เอาต์พุต/ข้อผิดพลาดตัวอย่าง findStr /c: "bytes ฟรี"> freespace.txt GSUDO config loglevel "ข้อผิดพลาด" # กำหนดค่าการบันทึกการบันทึกการกำหนดค่าการกำหนดค่าที่ลดลง "$ p [ยกระดับ] $ g" # กำหนดค่าพรอมต์ PromptGSUDO ที่กำหนดเอง รถยนต์
gsudo
ตรวจพบหากเรียกใช้จาก PowerShell และยกระดับคำสั่ง PS (เว้นแต่ -d
จะใช้เพื่อยกระดับคำสั่ง CMD)
คำสั่งในการยกระดับจะทำงานในกระบวนการที่แตกต่างกันดังนั้นจึง ไม่สามารถเข้าถึง $variables
ได้
ในการยกระดับคำสั่งหรือบล็อกสคริปต์: ห่อใน {Curly Braces}
# ไวยากรณ์: gsudo {scriptblock} GSUDO [ตัวเลือก] {ScriptBlock} [-args $ argver1 [... , $ argaln]];# ตัวอย่าง: gsudo {write-output "Hello World"}# ผ่านอาร์กิวเมนต์ที่มี -args $ mystring = "Hello World" Gsudo { write-output $ args [0]} -args $ mystring # output ถูก serialized เป็น psobjects ที่มีคุณสมบัติ $ services = gsudo {get-service 'wsearch', 'winmgmt'} write-output $ services.displayname# อินพุตด้วย: ตัวอย่างการวนซ้ำของ list.get-childitem - gsudo {$ input.creationtime}
ไวยากรณ์ทางเลือก:
# ค่าผ่าน (ไม่ใช่ตัวแปรโดยการอ้างอิง) โดยคำนำหน้า `$ ใช้:` เช่น $ mystring = "Hello World" Invoke-Gsudo {write-output $ ใช้: mystring} # ไวยากรณ์: invoke-gsudo [-ScriptBlock] <ScriptBlock> [[-argumentList] <Object []>] [-InputObject <Sobject>] [-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 'String Litalal'# ตัวอย่างการแทนที่ตัวแปรตัวอย่าง: $ file = 'C: my secret.txt'; $ อัลกอริทึม = 'md5'; $ hash = gsudo "(get -filehash '$ file' -algorithm $ อัลกอริทึม) .hash"# หรือ $ hash = gsudo "(get -filehash" "ไฟล์" .กัญชา"
ยอมรับตัวอักษรสตริงด้วยคำสั่งเพื่อยกระดับ
ส่งคืนรายการสตริง
ตัวเลือก: นำเข้าโมดูล gsudoModule.psd1
ลงในโปรไฟล์ PowerShell ของคุณ:
# เพิ่มบรรทัดต่อไปนี้ไปยัง $ Profile Import Module "Gsudomodule"# หรือ Run: Write-output "` Nimport-Module `" Gsudomodule` "" | โปรไฟล์เพิ่ม $
ในการทำเช่นนั้นเพิ่มบรรทัดนี้ในโปรไฟล์ของคุณ (หลังจากนำเข้า gsudoModule
):
set-alias แจ้ง gsudoprompt
หากคุณยังไม่ได้ปรับแต่งพรอมต์ PowerShell ของคุณ (ตัวอย่างเช่นโดยการติดตั้ง Oh-My-Posh) คุณสามารถเพิ่ม #
สีแดงได้อย่างง่ายดายระบุว่ากระบวนการปัจจุบันได้รับการยกระดับ:
Test-IsGsudoCacheAvailable
จะส่งคืนจริงถ้าแคช GSUDO ทำงานอยู่ (หมายถึงระดับความสูงที่ไม่มี UAC เป็นไปได้)
Test-IsProcessElevated
: ส่งคืนจริงหากกระบวนการปัจจุบันสูงขึ้น
Test-IsAdminMember
: ส่งคืนจริงหากผู้ใช้ปัจจุบันเป็นสมาชิกของกลุ่ม Local Administrators
ซึ่งหมายความว่าสามารถยกระดับด้วย
เพิ่มไวยากรณ์อัตโนมัติให้กับ GSUDO ใน PowerShell นอกจากนี้ยังแนะนำ 3 คำสั่งก่อนหน้านี้ทำให้เวิร์กโฟลว์ของคุณราบรื่นขึ้นกว่าเดิม!
เปิดใช้ gsudo !!
บน PowerShell เพื่อยกระดับคำสั่งที่ดำเนินการครั้งสุดท้าย
เพิ่มฟังก์ชั่น:
บน WSL การยกระดับและ root
เป็นแนวคิดที่แตกต่างกัน root
ทอนุญาตให้มีการบริหาร WSL อย่างเต็มรูปแบบ แต่ไม่ใช่ระบบ Windows ใช้ su
หรือ sudo
ดั้งเดิมของ WSL เพื่อเข้าถึง root
ในการรับสิทธิ์ผู้ดูแลระบบในกล่อง Windows คุณต้องยกระดับกระบวนการ WSL.EXE gsudo
อนุญาตให้ (ป๊อปอัพ UAC จะปรากฏขึ้น)
บน WSL Bash ให้เตรียม gsudo
เพื่อยกระดับ คำสั่ง WSL หรือ gsudo -d
สำหรับ คำสั่ง CMD
# ยกระดับ shellpc เริ่มต้น: ~ $ gsudo # เรียกใช้ WSL Commandpc: ~ $ GSUDO MKDIR/MNT/C/Windows/MyFolder# เรียกใช้ Windows Commandpc: ~ $ GSUDO -D Notepad C:/Windows/System32/Drivers/ETC/HOSTS PC: ~ $ gsudo -d "Notepad C: WindowsSystem32DriversetCots"# ทดสอบสำหรับ GSUDO และ Command SuccessRetVal = $?; ถ้า [$ retval -eq 0]; THENECHO "ความสำเร็จ"; ELIF [$ RETVAL -EQ $ ((999 % 256))]; จากนั้น # gsudo failure code code (999) จะอ่านเป็น 231 บน WSL (999 mod 256) echo "GSUDO ล้มเหลวในการยกระดับ!"; ELESECHO "คำสั่งล้มเหลวด้วยรหัสออก $ retval"; fi;
GSUDO config # แสดงการตั้งค่าและค่าการกำหนดค่าปัจจุบัน gsudo config {key} [-global] [value] # อ่านหรือเขียนการตั้งค่าผู้ใช้ gsudo config {key} [-global]-รีเซ็ตการกำหนดค่าการกำหนดค่าเป็นค่าเริ่มต้น -Global # ส่งผลกระทบต่อผู้ใช้ทั้งหมด (แทนที่การตั้งค่าผู้ใช้)
Credentials Cache
หากเปิดใช้งานและใช้งานได้ช่วยให้สามารถยกระดับหลายครั้งจากกระบวนการแม่ด้วยป๊อปอัพ 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}
แต่ไม่ทำงานหากโฟลเดอร์ ปัจจุบัน ของคุณเป็นไดรฟ์เครือข่าย ตัวอย่างเช่นอย่าแมป servershare
กับ Z:
และ Z:>gsudo do-something
โปรดรายงานปัญหาในส่วนปัญหา
เหตุใดจึงชื่อ gsudo
แทนที่จะเป็นแค่ sudo
?
เมื่อฉันสร้าง gsudo
มีแพ็คเกจ sudo
อื่น ๆ ในผู้จัดการแพ็คเกจยอดนิยมของ Windows ส่วนใหญ่เช่น Chocolatey
และ Scoop
ดังนั้นฉันจึงไม่มีทางเลือกอื่นที่จะเลือกชื่ออื่น ตัวติดตั้ง gsudo
สร้างนามแฝงสำหรับ sudo
ดังนั้นอย่าลังเลที่จะใช้ sudo
บนบรรทัดคำสั่งของคุณเพื่อเรียกใช้ gsudo
ทำไมคุณถึงย้ายจาก .Net Framework 4.6
ถึง .Net Core 7.0
?
เริ่มต้นจาก v1.4.0 มันถูกสร้างขึ้นโดยใช้ .Net 7.0
Nativeaot มันโหลดเร็วขึ้นและใช้หน่วยความจำน้อยลงและทำงานบนเครื่องโดยไม่ต้องติดตั้ง. NET Runtime ใด ๆ รุ่นก่อนหน้า <v1.3.0
ใช้. NET 4.6 เนื่องจากรวมอยู่ในการติดตั้ง Windows 10/11 ทุกครั้ง
gsudo
เป็นพอร์ตของ *nix sudo
?
ไม่ gsudo
เตือน Sudo ดั้งเดิมเกี่ยวกับความคาดหวังของผู้ใช้ คุณสมบัติ sudo
หลายอย่างเป็น *nix
เฉพาะและไม่สามารถมี Windows
Counterpart ได้ คุณสมบัติอื่น ๆ (เช่น sudoers
) สามารถนำไปใช้งานได้ แต่ไม่ได้อยู่ที่จุดนี้
ข้อกำหนดคืออะไร? มันใช้งานได้ใน Windows 7/8 หรือไม่?
มันใช้งานได้กับ Win7 SP1 เป็นต้นไป คุณสมบัติบางอย่างอาจใช้งานได้ใน Windows 10/11 เท่านั้นเช่นการยกระดับเป็น TrustedInstaller
ฉันจะกลับไปที่ระดับความปลอดภัยก่อนหน้านี้ได้อย่างไรหลังจากใช้ GSUDO ได้อย่างไร
ในลักษณะเดียวกับที่คุณทำกับ Unix/Linux sudo
: gsudo
ไม่ได้เปลี่ยนกระบวนการปัจจุบัน แต่จะเปิดกระบวนการใหม่ที่มีการอนุญาต/ระดับความสมบูรณ์ที่แตกต่างกัน หากต้องการกลับไปสู่ระดับก่อนหน้าเพียงจบกระบวนการใหม่ สำหรับ Command Prompt
หรือ PowerShell
เพียงพิมพ์ exit
กรุณาให้ดาวกับเรา!
ช่วยกระจายคำโดยกล่าวถึง gsudo
ในเครือข่ายสังคมออนไลน์!
สปอนเซอร์หรือบริจาค