- ประกาศเปิดตัว Sudo สำหรับ Windows ใน Windows 11 Insider Preview Build 26052
- Sudo สำหรับ Windows เป็นวิธีใหม่ที่ช่วยให้ผู้ใช้สามารถรันคำสั่งที่ยกระดับสิทธิ์ได้โดยตรงจากคอนโซลเซสชันที่ไม่มีสิทธิ์
- ตอนนี้ไม่จำเป็นต้องคอยหา "Run as administrator" อีกต่อไป
- เปิดซอร์สบน GitHub
- หากต้องการความสามารถเพิ่มเติมที่ Sudo สำหรับ Windows ยังไม่มี แนะนำให้ลองดู gsudo ของ Gerardo Grignoli
วิธีเปิดใช้งาน Sudo สำหรับ Windows
- สามารถเปิดใช้งาน Sudo สำหรับ Windows ได้โดยไปที่หน้าการตั้งค่า 'For developers' ใน Windows Settings แล้วเปิดตัวเลือก "Enable Sudo"
- หรือจะเปิดใช้งานด้วยการรันคำสั่งต่อไปนี้ในคอนโซลเซสชันที่ยกระดับสิทธิ์แล้วก็ได้:
sudo config --enable
วิธีตั้งค่า Sudo สำหรับ Windows
- ปัจจุบัน Sudo สำหรับ Windows รองรับตัวเลือกการตั้งค่า 3 แบบ: รันในหน้าต่างใหม่ (forceNewWindow), ปิดการรับอินพุต (disableInput), รันแบบอินไลน์ (normal)
- หากต้องการเปลี่ยนตัวเลือกการตั้งค่า สามารถใช้เมนูดรอปดาวน์ในหน้าการตั้งค่า 'For developers' ของ Windows Settings หรือรันคำสั่งในคอนโซลเซสชันที่ยกระดับสิทธิ์แล้ว
ตัวเลือกการตั้งค่า 1: ในหน้าต่างใหม่
- ในการตั้งค่านี้ Sudo for Windows จะเปิดหน้าต่างคอนโซลใหม่ที่ยกระดับสิทธิ์แล้ว และรันคำสั่งในหน้าต่างนั้น
- ตัวอย่างเช่น เมื่อรัน
sudo netstat -ab จะมีการเปิดหน้าต่างใหม่และรันคำสั่งในหน้าต่างนั้น
ตัวเลือกการตั้งค่า 2: ปิดการรับอินพุต
- ในการตั้งค่านี้ Sudo for Windows จะรันโปรเซสที่ยกระดับสิทธิ์แล้วในหน้าต่างปัจจุบัน แต่โปรเซสใหม่นั้นจะถูกสร้างขึ้นมาโดยที่ stdin ถูกปิดไว้
- นั่นหมายความว่าโปรเซสใหม่จะไม่รับอินพุตจากผู้ใช้ จึงใช้ไม่ได้กับโปรเซสที่ต้องการอินพุตเพิ่มเติมหลังจากยกระดับสิทธิ์
ตัวเลือกการตั้งค่า 3: อินไลน์
- การตั้งค่านี้มีพฤติกรรมใกล้เคียงกับ sudo บนระบบปฏิบัติการอื่นมากที่สุด
- Sudo for Windows จะรันโปรเซสที่ยกระดับสิทธิ์แล้วโดยเชื่อมต่อกับ stdin, stdout, stderr ของหน้าต่างปัจจุบัน
- ซึ่งหมายความว่าโปรเซสที่ยกระดับสิทธิ์ใหม่สามารถรับอินพุตและส่งเอาต์พุตกลับมายังหน้าต่างปัจจุบันได้
หลักการทำงาน
- เมื่อใช้ sudo ในบรรทัดคำสั่งเพื่อยกระดับสิทธิ์ของโปรเซส จะมีหน้าต่าง UAC แสดงขึ้นมาเพื่อให้ผู้ใช้ยืนยันการยกระดับสิทธิ์
- เมื่อผู้ใช้ยืนยันแล้ว โปรเซสจะถูกยกระดับสิทธิ์ตามตัวเลือกการตั้งค่าที่ผู้ใช้เลือกไว้
- หากต้องการดูพารามิเตอร์เสริมของคำสั่ง
sudo ให้รัน sudo -h ในคอนโซล
ในหน้าต่างใหม่
- ในการตั้งค่านี้ sudo.exe จะเปิดหน้าต่างคอนโซลใหม่ที่ยกระดับสิทธิ์แล้วและรันคำสั่งในหน้าต่างนั้น
- หน้าต่างใหม่จะเริ่มต้นด้วยไดเรกทอรีการทำงานและตัวแปรสภาพแวดล้อมเดียวกับหน้าต่างปัจจุบัน
- การตั้งค่านี้มีลำดับการทำงานคล้ายกับคำสั่ง runas
ปิดการรับอินพุตและอินไลน์
- ในการตั้งค่านี้ sudo.exe จะเริ่มโปรเซสใหม่ที่ยกระดับสิทธิ์แล้ว จากนั้นเริ่มโปรเซส sudo.exe ที่ยกระดับสิทธิ์แล้วอีกตัว และ sudo.exe ดั้งเดิมที่ไม่มีสิทธิ์จะสร้างการเชื่อมต่อ RPC กับโปรเซสใหม่ที่ยกระดับสิทธิ์แล้ว
- กล่าวอีกนัยหนึ่งคือ ข้อมูลจะถูกส่งต่อจากอินสแตนซ์ sudo ที่ไม่มีสิทธิ์ไปยังอินสแตนซ์ที่ยกระดับสิทธิ์แล้ว
- โดยเฉพาะอย่างยิ่ง console handle ของโปรเซสที่ไม่มีสิทธิ์จะถูกส่งต่อไปยังโปรเซสที่ยกระดับสิทธิ์แล้ว ทำให้โปรเซสที่ยกระดับสิทธิ์สามารถอ่านอินพุตจากโปรเซสที่ไม่มีสิทธิ์และเขียนเอาต์พุตกลับไปยังโปรเซสนั้นได้
- อย่างไรก็ตาม ในการตั้งค่า "ปิดการรับอินพุต" จะไม่มีการส่งต่อ input handle ของคอนโซลไปยังโปรเซสที่ยกระดับสิทธิ์แล้ว จึงไม่สามารถอ่านอินพุตจากผู้ใช้ได้
ขั้นตอนถัดไป
- ทีมงานกำลังดำเนินการเปิดซอร์ส Sudo สำหรับ Windows และมีแผนจะแชร์รายละเอียดเพิ่มเติมในอีกไม่กี่เดือนข้างหน้า
- ขอให้ช่วยส่งฟีดแบ็กโดยตรงผ่าน GitHub repository
ความเห็นของ GN⁺:
- การเปิดตัว Sudo สำหรับ Windows เป็นพัฒนาการสำคัญที่มอบประสบการณ์การจัดการสิทธิ์แบบลินุกซ์ให้กับผู้ใช้ Windows
- เครื่องมือนี้ช่วยให้นักพัฒนาทำงานได้อย่างมีประสิทธิภาพมากขึ้น และการเปิดซอร์สก็เปิดโอกาสให้ชุมชนเข้ามามีส่วนร่วมได้
- ในด้านความปลอดภัย การใช้โหมด "อินไลน์" จำเป็นต้องใช้อย่างระมัดระวัง และก็น่าสนใจที่ในอนาคตจะมีการจัดทำเอกสารเพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับประเด็นด้านความปลอดภัยเหล่านี้
1 ความคิดเห็น
ความเห็นจาก Hacker News
sudoกำลังถูกนำเข้ามาใน Windows นี่ไม่ใช่การพอร์ตsudoจาก Linux แบบตรง ๆ แต่เป็นการทำใหม่โดยคำนึงถึงความแตกต่างของโครงสร้างสิทธิ์ระหว่างระบบปฏิบัติการ เป้าหมายคือมอบประสบการณ์ให้ผู้ใช้รันคำสั่งด้วยสิทธิ์ผู้ดูแลระบบได้ในหน้าต่างเทอร์มินัลเดียวกันcurlและwgetด้วยคำสั่งที่ต่างออกไปโดยสิ้นเชิง ซึ่งอาจเป็นปัญหาได้เพราะอาร์กิวเมนต์ไม่เข้ากันelevateของ Nirsoft ก็ทำงานได้ดีอยู่แล้ว แต่การมีฟีเจอร์ที่ผสานเข้ากับระบบมากกว่านี้ย่อมดีกว่าsudoแทบจะถูกดูแลโดยคนเพียงคนเดียวsudoโดยไม่พูดถึงระบบปฏิบัติการสาย Linux/Unix เลยนั้นดูแปลกsudo.ps1ของpsutilsผ่านscoopมี UAC prompt ขึ้นมา แต่ก็เหมาะกับงานแบบโต้ตอบsudoแบบใหม่นี้จะกลายเป็นคำสั่งที่ซับซ้อนมากsudoจะถูกเพิ่มเข้ามาเป็นฟีเจอร์ใหม่ใน Windows แต่ตอนนี้ดูเหมือนว่ายังมีจุดอ่อนด้านความปลอดภัยอยู่ และคาดว่าน่าจะค่อย ๆ ดีขึ้นเมื่อเวลาผ่านไป