หากเคยใช้ Linux หรือรู้จักคนใช้ Linux คุณน่าจะได้ยินคำสั่ง sudo คำสั่งนี้เป็นองค์ประกอบสำคัญของเกือบทุก Linux distribution ทำหน้าที่ให้รันคำสั่งเป็นผู้ใช้อื่น โดยเฉพาะ root user บนบาง Linux distribution คุณล็อกอินเป็น root user ด้วยคำสั่ง su ได้ แต่ถือว่าน่ากลัวมาก และไม่มีใครทำ
จริงๆ แล้วมันอันตรายจนถูกปิดใช้งานโดยค่าเริ่มต้นบน Ubuntu แทนที่จะใช้ sudo ถ้าอยากรันคำสั่งเป็น root user Windows แล้วล่ะ? น่าเสียดายผู้คนส่วนใหญ่ล็อกอิน Windows เป็น Administrator ซึ่งเทียบเท่า root user ใน Linux แต่ Microsoft พยายามลดผลกระทบอันตรายโดยเปิด User Account Control (UAC)
แบบนี้ แม้ผู้ใช้มีสิทธิ์ Admin แอปที่รันภายใต้บัญชีนั้นจะไม่สืบสิทธิ์เหล่านั้น เว้นแต่ได้รับอนุมัติด้วยตนเองจากผู้ใช้ ช่วยป้องกันมัลแวร์และสปายแวร์ติดเชื้อผู้ใช้ Windows ที่ล็อกอินเป็น Admin
ดังนั้น Linux มีคำสั่ง sudo Windows มีอะไรบ้าง? มีทางเลือกให้ Windows ใช้รันคำสั่งด้วยสิทธิ์สูงขึ้นไหม? มีคำสั่ง sudo สำหรับ Windows ไหม? ในบทความนี้จะพูดถึง 5 ทางเลือกแทนคำสั่ง sudo สำหรับผู้ใช้ Windows
หมายเหตุ: เครื่องมือบางตัวเก่าแล้ว อาจทำงานหรือไม่ทำงานกับ Windows เวอร์ชันล่าสุด
คำสั่ง Windows Runas
Windows มีคำสั่ง runas ซึ่งเป็นคำสั่งตรงข้าม sudo บน Linux ใช้ runas รันสคริปต์ โปรแกรม หรือคำสั่งเป็นผู้ใช้อื่นหรือ administrator ไวยากรณ์เต็มของคำสั่ง runas:
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
หากต้องการเปิด command prompt แบบ admin พิมพ์:
runas /noprofile /user:Administrator cmd

/noprofile จะไม่โหลดโปรไฟล์ผู้ใช้ปัจจุบัน ลบออกได้ถ้าต้องการเข้าถึง environment variables ของผู้ใช้ หากต้องการเปิดไฟล์ข้อความด้วย Notepad ด้วยสิทธิ์ admin ใช้คำสั่ง:
runas /user:Administrator "notepad my_file.txt"
ดูหน้า Technet เกี่ยวกับ runas เพื่อข้อมูลเพิ่มเติม
โปรดทราบว่าเมื่อใช้คำสั่ง runas หากติดตั้งโปรแกรมหรือเปลี่ยนตั้งค่า การเปลี่ยนแปลงจะไปที่บัญชีผู้ใช้ที่รันคำสั่ง ตัวอย่าง: user X เป็นผู้ใช้ทั่วไป user Y เป็น admin หากล็อกอิน X แล้ว runas ด้วย credential admin การเปลี่ยนแปลงจะไปที่ settings ของ Admin ไม่ใช่ user X
ดังนั้นถ้าติดตั้งแอปโดยคลิกขวา EXE เลือก Run as Administrator จะติดตั้งไปที่โปรไฟล์ Administrator built-in ไม่ใช่ที่คุณล็อกอินอยู่ หากต้องการสิทธิ์สูงจริงเหมือน sudo โดยไม่มีปัญหาโปรไฟล์ ดูทางเลือกถัดไป
Sudo for Windows – Sourceforge
Sudo for Windows เป็นโปรแกรมฟรีที่ติดตั้งได้ จะให้ประสบการณ์ sudo บน Linux สำหรับ Windows ความแตกต่างเดียวคือ Sudo for Windows "preserves the user's profile and ownership of created objects" ตามที่นักพัฒนาระบุ นี่สะดวกมากถ้าชอบใช้สิทธิ์สูงติดตั้งแอปหรือเปลี่ยนตำแหน่งผู้ใช้ như My Documents ฯลฯ
มันให้สิทธิ์ Admin แต่เก็บการเปลี่ยนแปลงทั้งหมดในโปรไฟล์ปัจจุบัน แทนที่จะไปที่บัญชีที่ใช้รันคำสั่ง โปรแกรมต้องการ .NET 2.0 ซึ่งดาวน์โหลดแยกไม่ได้ ต้องติดตั้ง .NET Framework 3.5 ที่รวม 2.0 ไว้
หลังติดตั้ง Sudo for Windows ต้องเพิ่มบัญชีผู้ใช้ที่ต้องการให้สิทธิ์สูงเข้าไปในกลุ่มเฉพาะที่โปรแกรมสร้างชื่อ Sudoers คลิกขวา My Computer หรือ This PC คลิก Manage ขยาย Users and Groups คลิก Groups ควรเห็นกลุ่ม Sudoers
ดับเบิลคลิก Sudoers คลิกปุ่ม Add
ในดายล็อกถัดไป คลิก Advanced แล้ว Find Now จะรายชื่อผู้ใช้และกลุ่มทั้งหมด ดับเบิลคลิกผู้ใช้ที่ต้องการเพิ่ม
ทำซ้ำสำหรับผู้ใช้จำนวนที่ต้องการ คลิก OK ควรเห็นสมาชิกใน Members listbox คลิก OK ตอนนี้ควรใช้ sudo GUI และคำสั่งได้แล้ว คลิกขวาโปรแกรมจะเห็นตัวเลือก Sudo
คุณยังเปิด command prompt พิมพ์ sudo รันคำสั่งด้วยสิทธิ์สูงได้
โดยรวมค่อนข้างเก๋และทำงานดี แต่โปรดทราบว่าโปรแกรมนี้มีประโยชน์สำหรับ การเปิดโปรแกรมหรือกระบวนการ ผ่านคลิกขวาหรือ command prompt แต่ไม่ได้สำหรับรัน command line apps เช่น sudo mkdir "c:\Program Files\new" จะไม่ทำงานกับ Sudo for Windows ตัวนี้ สำหรับฟังก์ชันนั้น มีอีกโปรแกรมชื่อเดียวกันแต่นักพัฒนาคนละคน อ่านต่อด้านล่าง
Sudo for Windows – Luke Sampson
มีนักพัฒนาอีกคนเขียน Sudo for Windows อีกตัวที่รัน command line apps ได้ มาลองตัวอย่างสร้างโฟลเดอร์ใหม่ใน C:\Program Files คุณทำไม่ได้โดยค่าเริ่มต้น
ข้างบนใช้ PowerShell แต่ command prompt ก็จะได้ error เหมือนกัน แต่เมื่อติดตั้ง Sudo for Windows แล้ว ใส่คำว่า sudo นำหน้าคำสั่ง มันทำงานได้สมบูรณ์โดยไม่มี error!
วิธีติดตั้ง: เปิด PowerShell พิมพ์คำสั่งต่อไปนี้ตามลำดับ:
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
set-executionpolicy unrestricted -s cu -f
scoop install sudo
ถ้าทุกอย่างโอเค ควรเห็นเอาต์พุตใน PowerShell หลังแต่ละคำสั่ง:
แค่นี้ก็จบ! ตอนนี้พิมพ์คำสั่งได้แล้ว โดยเพิ่ม sudo นำหน้า ข้อรำคาญเดียวคือหน้าต่าง UAC ยังขึ้นและต้องกด Yes เพื่อให้ทำงาน แม้จะรำคาญเล็กน้อย แต่ประโยชน์คุ้มค่า
Elevate
Elevate เป็นโปรแกรมทำงานกับ UAC และไม่ทำงานเหมือน sudo ตรงๆ ด้วย Elevate จะเปลี่ยน executing user เป็น Administrator เหมือนคำสั่ง runas แต่มีประโยชน์สำหรับทำงานบน command line หรือ batch files
จุดประสงค์หลักของ elevate ไม่ใช่การหลีกเลี่ยง UAC แต่เป็นการเริ่มกระบวนการในสถานะ elevated จาก shell ที่ไม่ได้ elevated แล้วดำเนินต่อไปปกติแม้คำสั่งเสร็จแล้ว Elevate มีประโยชน์สำหรับสคริปต์ เพราะไม่ต้องกังวลพยายามสคริปต์ทั้งกระบวนการคลิกขวาและรัน command prompt เป็น Admin
Elevation PowerToys for Windows
สำหรับผู้ที่ทำงานมากบน command line หรือทำงานกับสคริปต์และ batch files หน้า Elevation PowerToys for Windows มีเครื่องมือและสคริปต์ที่มีประโยชน์มาก
Script elevation power toys ถูกสร้างขึ้นเพื่อแก้ปัญหาที่ทำให้หงุดหงิดของ UAC เมื่อพยายาม elevate โปรแกรมจาก command line หรือรันสคริปต์เป็น administrator
หวังว่าเครื่องมือและโปรแกรมเหล่านี้เพียงพอที่จะทำให้คุณรู้สึกว่ากำลังใช้ sudo บน Windows จริงๆ ไม่มีการแทนที่ที่สมบูรณ์แบบ แต่มีตัวเลือกหลายอย่างที่ใกล้เคียง หากคุณใช้อย่างอื่นเพื่อ elevate โปรแกรม คำสั่ง หรือสคริปต์ใน Windows บอกเราในคอมเมนต์ได้ ขอให้สนุก!