เรียกใช้คำสั่งยกระดับด้วย sudo บน windows 11

/th/images/enable-sudo-on-windows-11.png

เริ่มต้นด้วย Build 24H2, Windows 11 มีคำสั่ง sudo ในตัว คำสั่งนี้อนุญาตให้เรียกใช้คำสั่งในฐานะผู้ดูแลระบบโดยตรงจากเซสชัน CMD/PowerShell/เทอร์มินัลที่ไม่ได้รับสิทธิพิเศษ

โดยค่าเริ่มต้นคำสั่ง sudo จะถูกปิดใช้งานใน Windows 11 เพื่ออนุญาตให้ใช้เครื่องมือนี้ให้ใช้สวิตช์เปิดใช้งาน Sudo Toggle ในการตั้งค่า-> System-> สำหรับนักพัฒนา

/th/images/enable-sudo-on-windows-11.png.webp

หรือคุณสามารถเปิดใช้งาน Sudo ผ่าน Windows Registry

reg เพิ่ม" hklm \ software \ microsoft \ windows \ currentversion \ sudo "/v" เปิดใช้งาน "/t reg\_dword/d 1/f

ตัวอย่างเช่นการรันคำสั่ง PowerShell ต่อไปนี้เพื่อรีสตาร์ทบริการ Windows จากเทอร์มินัลที่ไม่ได้รับการปรับปรุงจะส่งผลให้เกิดข้อผิดพลาด

รีสตาร์ทบริการ iphlpsvc

จากนั้นเปิดใช้งาน sudo ในการตั้งค่า Windows และเรียกใช้คำสั่งเดียวกันผ่าน sudo

Sudo PowerShell" รีสตาร์ท-บริการ iphlpsvc " `

พรอมต์การควบคุมบัญชีผู้ใช้ (UAC) จะปรากฏขึ้นเพื่อขอความสูงในสิทธิพิเศษ เมื่อได้รับการอนุมัติแล้วหน้าต่างเทอร์มินัลใหม่จะถูกเปิดตัว (แยกจากเซสชันปัจจุบันที่มีการจัดตั้งบริบทแล้ว) และคำสั่งที่ระบุจะถูกดำเนินการด้วยสิทธิ์การดูแลระบบ

/th/images/sudo-uac-elevation-prompt.png.webp /th/images/running-elevated-powershell-command-using-sudo-in.png.webp

ซึ่งแตกต่างจาก runas คำสั่ง sudo ไม่ได้แจ้งให้รหัสผ่านผู้ดูแลระบบในบรรทัดคำสั่ง พรอมต์ UAC ใช้เพื่อยืนยันและยกระดับสิทธิ์ของผู้ใช้ปัจจุบัน แต่ไม่อนุญาตให้เลือกบัญชีผู้ใช้ที่แตกต่างกันเพื่อยกระดับ

ในทำนองเดียวกันคุณสามารถใช้ sudo ในพรอมต์ CMD ฉันกำลังพยายามหยุดบริการโดยใช้พรอมต์คำสั่งที่ไม่ใช่ (ไม่ได้รับการปรับปรุง)

net stop iphlpsvc


System error 5 has occurred.Access is denied.

ตอนนี้ฉันเรียกใช้คำสั่งเดียวกันผ่าน sudo:

sudo net หยุด iphlpsvc

/th/images/use-sudo-command-in-cmd-prompt.png.webp

เรียกใช้เป็นผู้ดูแลระบบ

” ตัวเลือก. หากคอนโซล PowerShell ทำงานในโหมดที่ไม่ใช่ผู้บริหารคุณต้องเริ่มต้นเซสชันที่สูงขึ้นจากภายในเซสชันปัจจุบันโดยใช้คำสั่งนี้:

ก่อนหน้านี้การรันโปรแกรมหรือคำสั่งที่มีสิทธิ์ยกระดับจากคอนโซลที่ไม่มีการจัดเตรียมจำเป็นต้องเรียกใช้หน้าต่างพรอมต์คำสั่งใหม่โดยใช้ตัวเลือก“” หากคอนโซล PowerShell ทำงานในโหมดที่ไม่ใช่ผู้บริหารคุณต้องเริ่มต้นเซสชันที่สูงขึ้นจากภายในเซสชันปัจจุบันโดยใช้คำสั่งนี้:

`` เริ่มกระบวนการ PowerShell-Verb runas `

Sudo สำหรับ Windows เรียกใช้แอพที่มีสิทธิ์สูงในสามโหมด โหมดเหล่านี้สามารถเลือกได้จากแอพการตั้งค่าหรือระบุจากบรรทัดคำสั่ง

  • ในหน้าต่างใหม่ - เมื่อคำสั่งหรือโปรแกรมทำงานผ่าน Sudo จะเปิดในหน้าต่างยกระดับใหม่ (เซสชัน) ซึ่งทำงานเป็นผู้ดูแลระบบ นี่คือพฤติกรรมเริ่มต้น sudo config-เปิดใช้งาน forcenewwindow

  • ด้วยการปิดใช้งานอินพุต-นี่คือตัวเลือกที่ปลอดภัยที่สุดโดยที่คำสั่งทำงานด้วยสิทธิ์ที่สูงขึ้นในหน้าต่างปัจจุบัน แต่ไม่สามารถรับหรือแจ้งให้ผู้ใช้ป้อนข้อมูลภายในเซสชันนั้น: sudo config-เปิดใช้งาน disableInput

  • Inline - โหมดนี้คล้ายกับพฤติกรรมของคำสั่ง sudo ใน Linux และ OSS อื่น ๆ คำสั่งยกระดับทำงานในคอนโซลปัจจุบันและสามารถรับอินพุตจากมัน (ตัวเลือกที่สะดวกที่สุด แต่ปลอดภัยที่สุด): sudo config-เปิดใช้งานปกติ

/th/images/sudo-modes-in-windows-11.png.webp

คุณสามารถเรียกใช้คำสั่งยกระดับในคอนโซลปัจจุบันโดยใช้ sudo โดยไม่คำนึงถึงโหมด Sudo ปัจจุบัน เพียงเพิ่มตัวเลือกอินไลน์

sudo-inline net stop iphlpsvc

/th/images/sudo-inline-elevate-command-in-current-session.png.webp

หากต้องการดูรายการเต็มของตัวเลือกและพารามิเตอร์ Sudo ที่รองรับใน Windows ให้เรียกใช้คำสั่งต่อไปนี้:

sudo-h

/th/images/sudo-command-line-options-in-windows.png.webp

*ลิงค์แหล่งที่มา:

การควบคุมบัญชีผู้ใช้ (UAC) พรอมต์, runas,