ในโลกของ ลีนุกส์ (Linux) หรือจะเป็นระบบปฏิบัติการที่พัฒนาอยู่บน Linux ที่มีอยู่มากมายก็ตาม ความสามารถในการจัดการสิทธิ์ของผู้ใช้เป็นเรื่องที่สำคัญมาก คำสั่ง Run0 เป็นเครื่องมือตัวใหม่ที่นำเสนอวิธีการที่ง่าย และยืดหยุ่นในการจัดการสิทธิ์ผู้ใช้งาน โดยไม่ต้องใช้ไฟล์ตั้งค่า (Config) ที่ซับซ้อน ด้วยขนาดโค้ดที่เล็ก และการใช้งานที่ง่าย Run0 จึงกลายเป็นทางเลือกที่น่าสนใจ สำหรับผู้ดูแลระบบที่ต้องการประสิทธิภาพ และความคล่องตัวในการจัดการระบบ
บทความนี้จะพาคุณผู้อ่านมารู้จักคุณสมบัติ และประโยชน์ของคำสั่ง Run0 รวมถึงวิธีการใช้งานที่เหมาะสมสำหรับการเพิ่มประสิทธิภาพการจัดการระบบ ...
คิดว่าก่อนที่จะกล่าวถึง คำสั่ง "Run0" เราควรจะอธิบายเกี่ยวกับ คำสั่ง "Sudo" แบบพอสังเขปกันสักเล็กน้อย
Sudo เป็นคำสั่งยกระดับสิทธิ์ที่เก่าแก่ที่สุดตัวหนึ่งสำหรับระบบปฏิบัติการ Linux และระบบ UNIX-Like อื่น ๆ มันถูกพัฒนาขึ้นครั้งแรกในช่วงทศวรรษที่ ค.ศ. 1980 (พ.ศ. 2523) โดยมันถูกใส่ไว้ในระบบ "Users" และ "Groups System" ที่มีอยู่แล้วใน UNIX เพื่อใช้จัดการสิทธิ์ "Root" (สิทธิ์ Superuser ที่มีอำนาจสูงสุดในระบบ) สำหรับการใช้คำสั่งระบบ (System Commands)
ข้อดีหลักของ Sudo คือมันมีการทำงานแบบ All-In-One สำหรับการยกระดับสิทธิ์ และการอนุญาต ด้วยคำสั่ง Sudo ผู้ใช้เพียงแค่ต้องกำหนด "ไฟล์ Sudoers" เพื่อจัดการกำหนดว่าใครที่สามารถเป็น superuser ได้บ้าง และโปรแกรมใดที่ผู้ใช้สามารถรันได้ด้วยสิทธิ์ Root ทำให้มันเป็นทางเลือกที่น่าสนใจ สำหรับผู้ดูแลระบบที่ต้องการวิธีจัดการการเข้าถึง Root ที่ง่าย และเป็นระเบียบ
อีกเหตุผลหนึ่งที่ทำให้ Sudo มีความน่าใช้งานคือ ความสามารถในการตรวจสอบ และบันทึกประวัติของคำสั่งระบบ ที่ถูกรันบนเครื่องของคุณโดย Superuser ซึ่งช่วยให้ผู้ดูแลระบบสามารถระบุช่วงเวลาที่ระบบมีปัญหาได้อย่างแม่นยำ สะดวกต่อการแก้ไขปัญหา
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
และสุดท้าย คำสั่ง Sudo นั้นง่ายต่อการขยายไปยังโฮสต์หลาย ๆ เครื่อง ด้วยการสนับสนุนจาก โปรโตคอล (Protocol) ที่มีชื่อว่า "LDAP (Lightweight Directory Access Protocol)" และ "Active Directory" ที่มีอยู่แล้ว ทำให้มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับผู้ดูแลระบบ ที่ต้องจัดการกับคอมพิวเตอร์หลายเครื่องสำหรับทีม และธุรกิจต่าง ๆ เพราะฉะนั้น Sudo จึงไม่เพียงแต่เป็นเครื่องมือที่มีประสิทธิภาพในการยกระดับสิทธิ์ แต่ยังเป็นเครื่องมือบริหารจัดการสำหรับผู้ดูแลระบบที่ดีอีกด้วย
Run0 เป็นคำสั่งใหม่ที่เพิ่มนำมาใช้ใน Systemd เวอร์ชัน 256 (Systemd เป็นระบบ และตัวจัดการ ที่ Linux Distributions หลายตัว เลือกใช้งานแทนที่ระบบเดิมอย่าง "SysV init system" เพื่อช่วยให้ทำให้การเริ่มต้น และตรวจสอบบริการมีความทันสมัยมากขึ้น) โดยมีจุดประสงค์เพื่อใช้แทนคำสั่ง Sudo
ทั้งสองคำสั่งนี้ สามารถใช้ในการยกระดับสิทธิ์การใช้งาน แต่มันก็มีความแตกต่างกันบ้าง โดย Lennart Poettering ผู้พัฒนาได้อธิบายว่า Run0 นั้นเป็นคำสั่งที่คล้ายคลึงกับคำสั่ง "ssh" มากกว่าคำสั่ง "Sudo"
Run0 นำเสนอแนวคิดใหม่ที่แตกต่างในการยกระดับสิทธิ์สำหรับ Linux โดยใช้ Systemd-run เพื่อสร้างสภาพแวดล้อมที่ปลอดภัย และแยกต่างหากสำหรับการรันโปรแกรมด้วยสิทธิ์ "root" ข้อได้เปรียบหลักของ Run0 คือมันไม่พึ่งพา "setuid (SUID)" ในการรันคำสั่ง root ทำให้โปรแกรมนี้ปลอดภัยจากการโจมตีเพื่อยกระดับสิทธิ์ที่มักเกิดกับโปรแกรม SUID ขนาดใหญ่
ภาพจาก : https://www.maketecheasier.com/run0-vs-Sudo-whats-the-difference/
ข้อดีอีกประการหนึ่งของ Run0 คือ มันย้ายการทำงานของตัวแทนการยืนยันตัวตน (Authentication Agent) ไปให้ Polkit (Framework สำหรับการจัดการนโยบายการยกระดับสิทธิ์ในระบบ Linux) ซึ่งนอกจากมันจะจัดการการตั้งค่านโยบายของแอปพลิเคชันบนระบบให้แล้ว แต่ยังรวมการยืนยันตัวตนในเครื่องเอาไว้ด้วย อีกทั้งยังให้คุณสมบัติควบคุมวิธีที่โปรแกรม และผู้ใช้เข้าถึงสิทธิ์ root ได้ละเอียดขึ้น
และสุดท้าย Run0 จะสร้าง "pseudo-TTY" (PTY) ใหม่ทุกครั้งที่ผู้ใช้เรียกใช้คำสั่งที่ต้องการสิทธิ์พิเศษ ซึ่งหมายความว่าโปรแกรมต่าง ๆ จะไม่สืบทอดสภาพแวดล้อมของเชลล์ปัจจุบัน ทำให้ง่ายต่อการแยกกระบวนการทำงานที่ผิดปกติในระบบให้ไม่ส่งกระทบต่อส่วนอื่น
แม้ว่า คำสั่ง "Run0" และ "Sudo" จะเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการยกระดับสิทธิ์ของผู้ใช้ ทั้งสองคำสั่ง เลือกใช้วิธีการที่แตกต่างกันเพื่อบรรลุเป้าหมาย ดูความแตกต่างบางประการ เพื่อช่วยคุณตัดสินใจได้ว่า ควรเลือกใช้คำสั่งไหนดี ?
Run0 มีความต่างจากคำสั่งยกระดับสิทธิ์อื่น ๆ มันไม่มีการใช้ไฟล์ Config ในการเปลี่ยนแปลงอำนาจของผู้ใช้ แต่จะใช้ "Flags" ที่มีอยู่แล้ว เมื่อผู้ใช้เรียกใช้มันในเทอร์มินัล (Terminal) สิ่งนี้ช่วยให้ผู้ใช้สามารถมุ่งเน้นการทำงานไปที่ขั้นตอนการทำงานเพียงอย่างเดียว แทนที่จะต้องมาเสียเวลาปรับแต่งไฟล์ Config
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
ในทางกลับกัน Sudo มีตัวเลือกมากมายในไฟล์ Config หลัก "/etc/sudo.conf" และ "/etc/sudoers" ทั้งสองไฟล์สามารถประสานการทำงานร่วมกันเพื่อควบคุมการทำงานของ Sudo บนระบบของคุณได้อิสระมากกว่า ตัวอย่างเช่น เราสามารถกำหนดค่า Sudo ให้ทำงานโดยไม่ต้องใช้รหัสผ่าน แม้ว่าสิ่งนี้อาจทำให้ผู้ใช้ใหม่รู้สึกสับสนได้ง่าย แต่ระดับของความยืดหยุ่น และการปรับแต่งนี้ ช่วยให้ผู้ใช้สามารถออกแบบ Workflow ของ Sudo ให้เป็นตามต้องการได้มากกว่า
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
ปัจจุบันนี้ Linux Distros ส่วนใหญ่จะมีการติดตั้ง Run0 และ Sudo มาเป็นค่าเริ่มต้นให้เลย ทำให้สามารถใช้งานได้ง่ายโดยไม่ต้องทำการตั้งค่าเพิ่มเติม อย่างไรก็ตาม มันก็ยังมีความแตกต่างในการใช้งานระหว่างสองคำสั่งนี้ที่อาจยังไม่เป็นที่พึงพอใจสำหรับผู้ใช้บางราย
ปัญหาของ Run0 มาจากการที่มันพึ่งพา Polkit ใน การยืนยันตัวตน (Authentication) ซึ่งในบาง Terminal คำสั่ง Run0 อาจจะแสดงข้อความขอรหัสผ่านบนหน้าจอที่ต่างกัน ซึ่งอาจเป็นปัญหาได้ ถ้าคุณกำลังใช้ Terminal Multiplexer อย่างเช่น Tmux ในการจัดการ Shell Sessions หลาย ๆ อัน
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
ในขณะที่ปัญหาของคำสั่ง Sudo คือ การที่มันไม่อนุญาตให้ผู้ใช้งานแก้ไขไฟล์ Sudoers ผ่านโปรแกรมแก้ไขข้อความทั่วไปได้ มันบังคับให้เราต้องใช้โปรแกรมที่ชื่อว่า Visudo แทน ซึ่งมันจะเข้ามาช่วยตรวจสอบความสมบูรณ์ของไฟล์ Sudoers ถึงแม้ว่าสิ่งนี้จะทำให้การแก้ไขไฟล์ Sudoers ปลอดภัยขึ้น แต่มันอาจจะซับซ้อนเกินไปสำหรับผู้ใช้ทั่วไปที่ต้องการแค่จัดการสิทธิ์ Root เท่านั้น
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
ในปัจจุบันนี้ ขนาดโดยรวมของซอร์สโค้ดเป็นตัวบ่งชี้ที่ดีว่า โปรแกรมมีความซับซ้อนมากขนาดไหน นี่เป็นประเด็นสำคัญสำหรับการยกระดับสิทธิ์ เพราะความซับซ้อนของโค้ดยิ่งเยอะ ยิ่งมีโอกาสที่จะพบถูกค้นพบช่องโหว่ด้านความปลอดภัยได้มากขึ้น
หนึ่งในความแตกต่างของ Run0 เมื่อเทียบกับวิธียกระดับสิทธิ์อื่น ๆ คือ มันถูกสร้างขึ้นบน Systemd-Run ไม่เพียงแต่นี่จะทำให้ Run0 สามารถใช้ประโยชน์จากคุณสมบัติของ Systemd-Run ได้ แต่ยังหมายความว่าโปรแกรมนี้มีจำนวนโค้ดลดน้อยลง ทำให้ Run0 ง่ายต่อการตรวจสอบหาปัญหาด้านความปลอดภัยในอนาคต
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
Sudo เป็นโครงการซอฟต์แวร์ขนาดใหญ่ที่ครอบคลุมหลายไฟล์ และภาษาการเขียนโปรแกรมต่าง ๆ แม้ว่าความซับซ้อนนี้จะช่วยให้ sudo เป็นแอปฯ การยกระดับสิทธิ์ที่ทรงพลัง แต่ในขณะเดียวกันมันก็หมายความว่า มันมีช่องทางการโจมตีที่ใหญ่มากตามไปด้วยสำหรับช่องโหว่ที่อาจเกิดขึ้นได้
ภาพจาก : https://www.maketecheasier.com/run0-vs-sudo-whats-the-difference/
อายุของซอฟต์แวร์ก็เป็นอีกปัจจัยสำคัญในการพิจารณาว่า ซอฟต์แวร์นั้นมีความเชื่อถือได้เพียงใด โครงการที่เพิ่งถูกพัฒนาขึ้นมาใหม่มักมี บัค (Bug) และปัญหามากกว่า ขณะที่โครงการที่เก่ากว่าจะมีความเสถียรมากกว่า เนื่องจากผ่านการขัดเกลามาอย่างยาวนาน
Run0 ถือเป็นซอฟต์แวร์ใหม่ เพราะมันเพิ่งถูกเพิ่มเข้าไปใน Systemd ในเดือนมิถุนายน ค.ศ. 2024 (พ.ศ. 2567) ทำให้ เราสามารถพบเห็นมันได้เฉพาะใน Linux Distros ที่มีการอัปเดตใหม่ ๆ เท่านั้น ด้วยเหตุผลที่ว่ามา Run0 จึงเหมาะสำหรับการใช้งานทั่วไป และยังไม่เหมาะสมกับงานที่ต้องการความเชื่อถือสูง
ในขณะที่ Sudo เป็นหนึ่งในโครงการซอฟต์แวร์ที่เก่าแก่ที่สุด และยังคงพัฒนาต่อเนื่องอยู่ในปัจจุบัน ด้วยประวัติการพัฒนายาวนานกว่า 30 ปี ส่งผลให้ Sudo เป็นซอฟต์แวร์ที่มีความสมบูรณ์สูง และสามารถจัดการกับงานที่หลากหลายได้อย่างมีประสิทธิภาพ, เสถียร และเชื่อถือได้
Run0 | Sudo | |
การตั้งค่า | ไม่มีไฟล์ Config ใช้คำสั่ง Flags ในการตั้งค่าพฤติกรรมแทน | มีไฟล์ Config สองตัว และคำสั่ง Flags ให้เลือกใช้เป็นจำนวนมาก |
ความสะดวกในการใช้งาน | เรียบง่าย และมีความตรงไปตรงมา | อาจต้องตั้งค่าก่อนล่วงหน้า เพื่อให้ทำงานได้ตามที่ต้องการ |
ความปลอดภัย | ไม่ต้องพึ่งพา SUID และมีขนาดโค้ดที่เล็กกว่า | พึ่งพา SUID และมีโค้ดขนาดใหญ่ ทำให้มีพื้นที่โจมตีกว้างขึ้น |
การขยายตัว | ยังไม่รองรับปลั๊กอินของ บุคคลที่สาม (3rd-Party) | มี ตัวเชื่อมต่อ API สำหรับพัฒนาปลั๊กอิน 3rd-Party |
การสนับสนุนเครือข่าย | ออกแบบมาให้ทำงานในเครื่องเดียว | รองรับกับอุปกรณ์ในเครือข่ายผ่าน Centralized Access Policies |
ความเหมาะสม | ผู้ใช้ทั่วไปที่มองหาของใหม่มาแทน Sudo | ผู้ใช้ระดับสูงที่ต้องการตัวเลือกที่เสถียร และปรับแต่งได้เยอะ |
ท้ายที่สุดแล้ว จะเลือกใช้การยกระดับสิทธิ์ผ่าน Run0 หรือ Sudo ก็ขึ้นอยู่กับความต้องการของผู้ใช้เป็นหลัก
ถ้ามองหาการยกระดับสิทธิ์ที่ใช้งานง่าย ไม่ซับซ้อน Run0 ก็เป็นทางเลือกที่ดี การออกแบบที่ไม่ใช้ไฟล์ Config และการแยกกระบวนการ Root ทำให้มันยอดเยี่ยมสำหรับผู้ใช้ทั่วไปที่ต้องการทางเลือกของ Sudo แต่ไม่ยุ่งยาก
แต่ถ้าต้องการคุณสมบัติในการปรับแต่งได้ละเอียด และมีความเสถียร Sudo ก็เป็นตัวเลือกที่ดีกว่า ด้วยประวัติการพัฒนามายาวนาน และฟีเจอร์มากมาย ทำให้การปรับแต่ง Sudo ให้เข้ากับ Workflow ที่ต้องการเป็นเรื่องง่ายดาย
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |