ผู้ใช้ root ใน Linux คืออะไร และจะใช้งานอย่างปลอดภัยได้อย่างไร?

การปรับปรุงครั้งล่าสุด: 6 เมษายน 2026
ผู้แต่ง: อเล็กซาน
  • ผู้ใช้ root คือผู้ใช้ระดับสูงสุดของ Linux มีอำนาจควบคุมระบบอย่างสมบูรณ์และไม่มีข้อจำกัดด้านสิทธิ์ใดๆ
  • ระบบปฏิบัติการรุ่นใหม่ๆ ให้ความสำคัญกับการใช้คำสั่ง sudo และ su เพื่อขอสิทธิ์ชั่วคราวแทนการล็อกอินโดยตรงในฐานะ root
  • การใช้สิทธิ์ root อย่างไม่ระมัดระวังอาจนำไปสู่การสูญเสียข้อมูล ความล้มเหลวในการบูต และปัญหาด้านความปลอดภัยร้ายแรง
  • การเปิดใช้งาน การบล็อก และการตรวจสอบการเข้าถึงระดับรูท ควบคู่ไปกับหลักปฏิบัติที่ดีในการใช้คำสั่ง sudo เป็นสิ่งสำคัญสำหรับการบริหารจัดการที่ปลอดภัย

ผู้ใช้ root ใน Linux

หากคุณใช้ Linux มาได้ไม่นาน คุณก็คงเคยเจอกับคำพูดที่โด่งดังนี้เข้าบ้างไม่มากก็น้อย ผู้ใช้ระดับรูท (root user) คือผู้ใช้ที่มีอำนาจสูงสุดในการกระทำและยกเลิกการกระทำต่างๆ ในระบบโดยแทบไม่มีข้อจำกัดมันคือบัญชีลึกลับที่มักปรากฏในบทแนะนำต่างๆ บัญชีที่ช่วยให้คุณติดตั้งแพ็กเกจ ปรับแต่งการตั้งค่าที่ละเอียดอ่อน หรือแก้ไขระบบที่บูตไม่ติด... แต่ในขณะเดียวกันก็อาจทำลายเครื่องของคุณได้ด้วยคำสั่งที่พิมพ์ผิดเพียงคำสั่งเดียว

ในระบบปฏิบัติการ Linux รุ่นใหม่ๆ ส่วนใหญ่ โดยเฉพาะ Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Ubuntu นั้น การล็อกอินโดยตรงในฐานะ root ไม่เป็นที่นิยมอีกต่อไปแล้ว วิธีที่นิยมมากกว่าคือการใช้บัญชีผู้ใช้อื่นแทน ใช้คำสั่งเช่น sudo และ su เพื่อขอสิทธิ์ผู้ดูแลระบบเฉพาะเมื่อจำเป็นเท่านั้นวิธีนี้ช่วยลดความเสี่ยงและทิ้งร่องรอยไว้ในบันทึกระบบ ถึงกระนั้น การมีความเข้าใจที่ดีเกี่ยวกับ root ว่าคืออะไร แตกต่างจาก sudo และ su อย่างไร ควรใช้เมื่อใด วิธีการปิดใช้งานบัญชี และวิธีการกู้คืนรหัสผ่านนั้นเป็นสิ่งสำคัญหากคุณต้องการใช้งาน Linux ได้อย่างง่ายดาย

ผู้ใช้ root ใน Linux คืออะไร และทำไมจึงมีความพิเศษ?

ในระบบปฏิบัติการที่คล้าย Unix (Linux, BSD, macOS ฯลฯ) จะมีผู้ใช้ระดับสูงสุดเพียงคนเดียวที่มีบทบาทชัดเจนมาก: บัญชี root คือบัญชีที่มี UID 0 และมีอำนาจเด็ดขาดเหนือไฟล์ กระบวนการ และทรัพยากรระบบทั้งหมดไม่มีข้อจำกัดด้านสิทธิ์การเข้าถึงแบบทั่วไป หากผู้ใช้ระดับ root ต้องการอ่าน แก้ไข หรือลบสิ่งใด ก็สามารถทำได้

จากบัญชีนี้คุณสามารถ ติดตั้งและถอนการติดตั้งโปรแกรม อัปเดตระบบ แก้ไขไฟล์การกำหนดค่าใน /etc จัดการบริการ สร้างและลบผู้ใช้ ฟอร์แมตดิสก์ หรือเปลี่ยนแปลงสิทธิ์การเข้าถึงที่สำคัญมันเทียบเท่ากับผู้ใช้ "ผู้ดูแลระบบ" ของ Windows แต่มีขีดความสามารถในการเข้าถึงการทำงานภายในของระบบได้มากกว่าโดยไม่มีข้อจำกัดใดๆ

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

ในระบบปฏิบัติการอื่นๆ เช่น Debian ในการตั้งค่าแบบคลาสสิก การกำหนดรหัสผ่านสำหรับ root ระหว่างการติดตั้งเป็นเรื่องปกติ เพื่อให้ ผู้ใช้ระดับสูงสุดสามารถใช้งานได้โดยตรงในคอนโซล หรือสำหรับงานเฉพาะบางอย่างเท่านั้นแม้ว่าระบบเองจะสนับสนุนให้ใช้คำสั่ง sudo ก็ตาม

นอกเหนือจากผู้ใช้ระดับ root และผู้ใช้ทั่วไปแล้ว Linux ยังใช้ผู้ใช้อื่นๆ อีกด้วย ผู้ใช้ระบบประเภทบริการ (เดมอน) ที่มีสิทธิ์จำกัดมากผู้ใช้พิเศษเหล่านี้จะเรียกใช้กระบวนการต่างๆ เช่น เว็บเซิร์ฟเวอร์ ฐานข้อมูล หรือโปรแกรมทำงานเบื้องหลังของระบบ เพื่อป้องกันไม่ให้ช่องโหว่ด้านความปลอดภัยในบริการใดๆ นำไปสู่การควบคุมระบบอย่างสมบูรณ์โดยอัตโนมัติ เหมือนกับกรณีที่ทุกอย่างทำงานภายใต้สิทธิ์ root

แนวคิดเกี่ยวกับผู้ใช้ระดับสูงสุด (root superuser) ใน Linux

ประเภทของผู้ใช้ใน Linux และวิธีตรวจสอบว่าคุณคือใคร

แม้ว่าในทางปฏิบัติอาจดูเหมือนว่ามีบัญชีหลายประเภท แต่ในระดับสิทธิ์การเข้าถึงนั้น การแบ่งประเภทมีความชัดเจนมาก: รากอยู่ด้านหนึ่ง และ "ส่วนที่เหลือ" อยู่ด้านตรงข้ามผู้ใช้ใดก็ตามที่ไม่มี UID เป็น 0 นั้น โดยทางเทคนิคแล้วถือเป็นผู้ใช้ที่ไม่มีสิทธิ์พิเศษ แม้ว่าพวกเขาอาจมีสิทธิ์เพิ่มเติมบางอย่างด้วยคำสั่ง sudo ก็ตาม

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

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

หากคุณไม่แน่ใจว่ากำลังใช้งานเทอร์มินัลในฐานะผู้ใช้ใด คุณสามารถตรวจสอบได้ที่นี่ ข้อความแจ้งเตือนของเชลล์: เมื่อลงท้ายด้วย $ แสดงว่าคุณกำลังใช้บัญชีผู้ใช้ปกติ และเมื่อลงท้ายด้วย # แสดงว่าคุณกำลังใช้สิทธิ์ rootคุณสามารถเรียกใช้คำสั่งได้เช่นกัน whoami หรือตรวจสอบตัวระบุตัวเลขด้วย รหัส -uหากคุณได้รับข้อความ “root” หรือ “0” แสดงว่าคุณอยู่ในโหมดผู้ใช้ระดับสูง (superuser mode)

นอกจากนี้ ข้อความแจ้งเตือนมักจะแสดง ชื่อผู้ใช้ ชื่อคอมพิวเตอร์ ไดเร็กทอรีปัจจุบัน และสัญลักษณ์ $ หรือ #ตัวอย่างเช่น เช่นนี้ alumno@equipo:/home/alumno$ บ่งชี้ถึงผู้ใช้ทั่วไป ในขณะที่ root@equipo:/root# เป็นการสะท้อนถึงการประชุมบริหารโดยตรง

root, sudo และ su: แต่ละคำสั่งทำอะไรและควรใช้เมื่อใด

ในการใช้งานทั่วไป เรามักไม่พิมพ์รหัสผ่าน root ทุกครั้ง แทนที่จะเป็นเช่นนั้น ระบบปฏิบัติการรุ่นใหม่ส่วนใหญ่จึงเลือกใช้วิธีการอื่นแทน ยกระดับสิทธิ์ชั่วคราวจากบัญชีผู้ใช้ปกติโดยใช้เครื่องมือต่างๆ เช่น sudo และ suแม้ว่าบางครั้งจะมีการใช้คำเหล่านี้สลับกันไปมาในการสนทนา แต่คำทั้งสองมีบทบาทที่แตกต่างกัน และสิ่งสำคัญคือต้องแยกแยะความแตกต่างให้ชัดเจน

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

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

คำสั่ง sudo ทำงานอย่างไร และทำไมจึงสำคัญมาก

ในระบบต่างๆ เช่น Ubuntu ซึ่งอยู่ในกลุ่ม... sudo (หรือ “admin” ในเวอร์ชันเก่ากว่า) หมายความว่าบัญชีนี้สามารถ เรียกใช้คำสั่งในฐานะผู้ใช้ root โดยป้อนรหัสผ่านผู้ใช้ของคุณเองโดยไม่จำเป็นต้องรู้รหัสผ่านของผู้ใช้ระดับสูงสุด กฎที่ควบคุมสิ่งที่แต่ละคนสามารถทำได้นั้นถูกกำหนดไว้ในไฟล์ / etc / sudoersซึ่งได้รับการแก้ไขอย่างปลอดภัยด้วยคำสั่ง visudo.

วิธีใช้ก็ง่ายๆ เพียงแค่ใส่คำนั้นไว้ข้างหน้า ใส่คำสั่ง sudo ก่อนคำสั่งที่ต้องการสิทธิ์ระดับสูงตัวอย่างเช่น การติดตั้งแพ็กเกจมักทำด้วยวิธีนี้:

sudo apt install vlc

ในกรณีนี้ apt จะทำงานในฐานะผู้ใช้ root เขียนข้อมูลลงในไดเร็กทอรีระบบ เช่น /usr หรือ /var และบันทึกการเปลี่ยนแปลงลงในฐานข้อมูลแพ็กเกจ แม้ว่าคุณจะยังคงล็อกอินด้วยบัญชีผู้ใช้ปกติของคุณก็ตาม เมื่อการสั่งซื้อเสร็จสมบูรณ์ ระบบจะคืนค่าสิทธิ์การใช้งานของคุณเป็นปกติโดยอัตโนมัติ.

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

Defaults:ALL timestamp_timeout=0

ด้วยวิธีนี้ ทุกครั้งที่คุณใช้ sudo คุณจะต้องยืนยันตัวตนอีกครั้งซึ่งอาจยุ่งยากกว่าเล็กน้อย แต่ปลอดภัยกว่าในสภาพแวดล้อมที่ละเอียดอ่อนหรือมีผู้ใช้งานหลายคน

คำสั่ง `su` และการสลับไปยังบัญชีอื่นโดยสมบูรณ์

ส่วนคำสั่ง "su" นั้น มันไม่ได้เรียกใช้คำสั่งใดๆ เลย แต่จะเปิดเชลล์ใหม่โดยใช้ตัวตนของผู้ใช้รายอื่นแทนหากมีการเรียกใช้ "โดยไม่ใช้กำลัง":

su

ระบบจะสันนิษฐานว่าคุณต้องการเปลี่ยนไปใช้สิทธิ์ root ดังนั้น ระบบจะขอให้คุณป้อนรหัสผ่านผู้ดูแลระบบหากการเข้าสู่ระบบสำเร็จ คุณจะเห็นสัญลักษณ์พร้อมท์เปลี่ยนเป็น # และนับจากนั้นเป็นต้นไป คำสั่งใดๆ ที่คุณเรียกใช้จะดำเนินการด้วยสิทธิ์ระดับรูทจนกว่าคุณจะออกจากระบบ ทางออก.

นอกจากนี้ คุณยังสามารถระบุผู้ใช้เฉพาะเจาะจงได้:

su nombreusuario

สิ่งนี้จะมีประโยชน์มากเมื่อคุณจัดการ บริการที่ทำงานโดยใช้บัญชีผู้ใช้ของตนเอง (เช่น postgres, www-data เป็นต้น) และคุณจำเป็นต้องใช้งานเหมือนกับบริการเหล่านั้นโดยไม่ต้องปิดเซสชันหลักของคุณเมื่อใช้งานเสร็จแล้ว การใช้คำสั่ง exit จะนำคุณกลับไปยังผู้ใช้คนก่อนหน้า

ในระบบที่ล็อกบัญชี root ไว้หรือไม่มีรหัสผ่าน (เช่น การติดตั้ง Ubuntu หลายๆ ระบบ) คุณจะไม่สามารถสลับไปยังบัญชีนั้นโดยตรงด้วยคำสั่ง `su` ได้ ในกรณีเหล่านั้น วิธีการปกติคือ เหงื่อที่ไหลเป็นโซ่และของเขาตัวอย่างเช่น:

sudo su o sudo -i

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

เมื่อใดจึงเหมาะสมที่จะใช้ root, sudo หรือ su?

ทฤษฎีนั้นดี แต่ในชีวิตประจำวันสิ่งที่สำคัญคือ... ควรใช้เครื่องมือใดในสถานการณ์เฉพาะ เพื่อให้ทำงานได้อย่างรวดเร็วโดยไม่เสี่ยงต่อระบบโดยทั่วไปแล้ว ควรใช้ sudo สำหรับคำสั่งเฉพาะเมื่อใดก็ตามที่เป็นไปได้ และหลีกเลี่ยงการใช้เชลล์ root อย่างต่อเนื่อง หากคุณต้องการศึกษาลงลึกไปกว่านี้ เมื่อใดและเพราะเหตุใดจึงควรหลีกเลี่ยงเหงื่อลองดูคำแนะนำนั้น

ตัวอย่างเช่นสำหรับ ติดตั้งหรืออัปเดตซอฟต์แวร์ ในระบบปฏิบัติการ Debian หรือ Ubuntu นั้น โดยทั่วไปจะปฏิบัติดังนี้:

sudo apt update
sudo apt upgrade
sudo apt install gparted

ในสถานการณ์เหล่านี้ การล็อกอินด้วยสิทธิ์ root อย่างถาวรไม่ได้ช่วยอะไรมากนัก คุณจะได้รับความสะดวกสบายเพิ่มขึ้น แต่คุณก็เพิ่มความเสี่ยงในการลบหรือแก้ไขสิ่งที่ไม่ควรทำด้วยเช่นกัน.

คุณจะต้องใช้ sudo เมื่อ แก้ไขไฟล์การกำหนดค่าระบบตัวอย่างเช่น:

sudo nano /etc/hosts
sudo nano /etc/ssh/sshd_config

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

ในทางตรงกันข้าม คำสั่ง `su` (หรือ `sudo -i`) อาจมีประโยชน์เมื่อ คุณจะต้องเชื่อมโยงขั้นตอนการบริหารหลายอย่างเข้าด้วยกัน การใส่ `sudo` หน้าคำสั่งทุกคำสั่งอาจเป็นเรื่องยุ่งยาก ตัวอย่างเช่น เมื่อต้องทำงานบำรุงรักษาที่ซับซ้อน การจัดการหลายบัญชี การทำงานกับพาร์ติชั่น เป็นต้น ถึงกระนั้น การจำกัดเวลาที่ใช้ในโหมดนี้และออกจากโหมดทันทีเมื่อเสร็จสิ้นก็เป็นเรื่องที่ดี

รายละเอียดการใช้งานที่เป็นประโยชน์อย่างมากคือ หากคุณไม่แน่ใจว่าคุณเป็นผู้ใช้ root หรือไม่ คุณสามารถเรียกใช้คำสั่งนี้ได้ whoami o รหัส -uหากคุณได้คำว่า "root" หรือ "0" แสดงว่าถึงเวลาแล้วที่คุณต้องระมัดระวังเป็นอย่างยิ่งก่อนที่จะพิมพ์อะไรก็ตามที่อาจก่อให้เกิดความเสียหาย

แสดงเครื่องหมายดอกจันเมื่อพิมพ์รหัสผ่านด้วยคำสั่ง sudo

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

ระยะหนึ่งแล้วที่ sudo ได้นำเสนอตัวเลือกที่เรียกว่า pwfeedback วิธีนี้จะทำให้เครื่องหมายดอกจันปรากฏบนหน้าจอเมื่อป้อนรหัสผ่าน Ubuntu เวอร์ชันล่าสุดบางรุ่นเริ่มเปิดใช้งานฟังก์ชันนี้แล้ว แต่คุณสามารถเปิดใช้งานได้ด้วยตนเองบนระบบใดก็ได้โดยการแก้ไขการตั้งค่า sudo:

1. เปิดโปรแกรมแก้ไขการกำหนดค่าความปลอดภัยด้วยคำสั่ง:

sudo visudo

2. ภายในไฟล์ที่เปิดขึ้น (โดยปกติคือ /etc/sudoers) ให้เพิ่มบรรทัดลักษณะนี้:

Defaults pwfeedback

3. บันทึกและปิด จากนั้นเป็นต้นไป อักขระแต่ละตัวที่คุณพิมพ์เมื่อป้อนรหัสผ่าน sudo จะถูกแทนด้วยเครื่องหมายดอกจันหากในภายหลังคุณต้องการกลับไปใช้รูปแบบคลาสสิก (โดยไม่มีการแสดงผลภาพ) ก็เพียงแค่ลบบรรทัดนั้นออก แล้วบันทึกไฟล์อีกครั้งด้วย Visudo

การปรับแต่งนี้ไม่ส่งผลกระทบต่อความปลอดภัยทางด้านการเข้ารหัสของ sudo แต่... สิ่งนี้สามารถช่วยเพิ่มความสะดวกในการใช้งานสำหรับผู้ที่ต้องการเห็นภาพประกอบในการพิมพ์โดยเฉพาะอย่างยิ่งบนแป้นพิมพ์ที่ไม่มีไฟส่องสว่าง หรือเมื่อพิมพ์จากเทอร์มินัลระยะไกล

ความเสี่ยงที่แท้จริงของการใช้รากไม้โดยไม่ระมัดระวัง

บัญชีผู้ใช้ root นั้นทรงพลังและอันตรายอย่างยิ่ง ลินุกซ์ถูกออกแบบมาพร้อมระบบป้องกันหลายชั้นเพื่อให้ผู้ใช้ทั่วไปยากที่จะทำลายระบบโดยไม่ตั้งใจ แต่... เมื่อคุณเพิ่มสิทธิ์ต่างๆ อุปสรรคเหล่านั้นก็จะหายไป และการละเลยใดๆ ก็อาจกลายเป็นหายนะได้.

ความเสี่ยงร้ายแรงประการแรกคือ การลบไฟล์หรือโฟลเดอร์สำคัญโดยไม่ได้ตั้งใจ. คำสั่งเช่น rm -rf / o rm -rf /* คำสั่งเหล่านี้มีชื่อเสียงโด่งดังก็เพราะว่า หากเรียกใช้งานในฐานะผู้ใช้ root จะสามารถลบข้อมูลเกือบทั้งหมดในระบบไฟล์ได้ภายในไม่กี่วินาที แต่ไม่จำเป็นต้องทำถึงขนาดนั้น เพียงแค่พิมพ์พาธผิด หรือปล่อยตัวแปรว่างไว้ก็เพียงพอแล้ว ตัวอย่างเช่น:

rm -rf $directorio/*

หาก `$directory` ไม่ได้ถูกกำหนดไว้ตามที่คุณคาดหวัง คำสั่งอาจชี้ไปยังตำแหน่งที่แตกต่างจากที่คุณตั้งใจไว้อย่างสิ้นเชิง ในฐานะผู้ใช้ root ระบบจะไม่สร้างปัญหาให้คุณมากนัก และเมื่อคำสั่งเสร็จสมบูรณ์แล้ว โดยปกติแล้วการฟื้นตัวเป็นเรื่องยากมากหรืออาจเป็นไปไม่ได้เลย โดยไม่มีข้อมูลสำรองหรือเครื่องมือตรวจสอบทางนิติวิทยาศาสตร์

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

คุณต้องระมัดระวังด้วยเช่นกันเมื่อ แก้ไขสิทธิ์การเข้าถึงไฟล์ที่สำคัญด้วยคำสั่ง chmod หรือ chownคำสั่งเช่น chmod 000 /etc การจัดการไฟล์ /boot, GRUB bootloader หรือ /etc/passwd อย่างไม่ถูกต้อง อาจทำให้ระบบไม่สามารถบูตได้ ในกรณีเช่นนี้ แม้แต่การบูตจาก LiveCD ก็ไม่รับประกันว่าจะแก้ไขปัญหาได้โดยง่าย ในสภาพแวดล้อมการใช้งานจริง อาจจำเป็นต้องใช้บริการกู้คืนระบบจากผู้เชี่ยวชาญ

สุดท้ายนี้ จากมุมมองด้านการตรวจสอบ การล็อกอินโดยตรงในฐานะผู้ใช้ root จะทำให้การตรวจสอบย้อนกลับทำได้ยากขึ้นมาก เมื่อคุณใช้คำสั่ง sudo คำสั่งแต่ละคำสั่งจะถูกบันทึกไว้พร้อมกับชื่อผู้ใช้ที่เรียกใช้คำสั่งนั้นหากดำเนินการทุกอย่างในฐานะผู้ใช้ root โดยไม่ใช้ sudo บันทึกจะระบุเพียงว่า "root ทำบางอย่าง" แต่จะไม่ระบุว่าใครเป็นผู้ดำเนินการ ซึ่งทำให้การตรวจสอบและการปฏิบัติตามกฎระเบียบด้านความปลอดภัยเป็นไปได้ยากขึ้น

เปิดใช้งาน ปิดใช้งาน และล็อกบัญชีผู้ใช้ระดับรูท

ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้ บัญชีผู้ใช้ระดับรูทอาจเป็นดังนี้ สามารถเปิดใช้งานด้วยรหัสผ่าน ล็อกไว้ หรือไม่มีการกำหนดรหัสใดๆ เลยก็ได้ในระบบที่คล้ายกับ Ubuntu โดยทั่วไปแล้ว ผู้ใช้ root จะถูกปิดใช้งานสำหรับการเข้าสู่ระบบโดยตรง ในขณะที่ในระบบปฏิบัติการอื่นๆ จะมีการกำหนดรหัสผ่านระหว่างการติดตั้ง

หากบัญชีผู้ใช้ root ถูกล็อกในเครื่องของคุณ คุณสามารถเปิดใช้งานได้จากผู้ใช้ที่มีสิทธิ์ sudo โดยเรียกใช้คำสั่งต่อไปนี้:

sudo passwd root

ระบบจะขอให้คุณป้อนรหัสผ่านผู้ใช้ก่อน จากนั้นจึงขอให้คุณป้อนและยืนยันรหัสผ่าน root ใหม่ หลังจากนั้นเป็นต้นไป บัญชีของคุณจะถูกเปิดใช้งาน และคุณจะสามารถเข้าสู่ระบบในฐานะผู้ใช้ระดับสูงในเทอร์มินัลเสมือน หรือในบางกรณี อาจรวมถึงในอินเทอร์เฟซแบบกราฟิกด้วยแม้ว่าวิธีหลังจะไม่แนะนำอย่างยิ่งก็ตาม

หากคุณตัดสินใจว่าไม่ต้องการให้สิทธิ์การเข้าถึงระดับรูทใช้งานได้อีกต่อไป คุณสามารถล็อกบัญชีได้อีกครั้งโดยใช้คำสั่ง:

sudo passwd -l root

พารามิเตอร์ -l จะบล็อกการเข้าถึงโดยการเชื่อมโยงกับรหัสผ่านที่ไม่ถูกต้อง เพื่อให้ คุณไม่สามารถล็อกอินในฐานะผู้ใช้ root ได้ ไม่ว่าจะด้วยคำสั่ง `su` หรือบนหน้าจอล็อกอินก็ตามอย่างไรก็ตาม ผู้ใช้ที่ได้รับอนุญาตจะยังคงสามารถใช้ sudo เพื่อจัดการระบบได้ ดังนั้นคุณจะไม่ขาดวิธีการในการดำเนินการบำรุงรักษา

บางระบบปฏิบัติการยังมีตัวเลือกให้ปิดใช้งานและเปิดใช้งาน root อีกครั้งโดยใช้ชุดคำสั่งต่างๆ เช่น sudo passwd -dl root o sudo passwd -u root เพื่อปลดล็อกมัน ไม่ว่ากรณีใดก็ตาม โดยทั่วไปแล้ว แนะนำให้ล็อกสิทธิ์ root ไว้ และใช้คำสั่ง sudo เสมอ ยกเว้นในกรณีพิเศษบางอย่างเช่น สภาพแวดล้อมสำหรับการกู้ภัยหรือการกู้คืนระบบที่ได้รับความเสียหายอย่างรุนแรง

กู้คืนหรือเปลี่ยนรหัสผ่าน root

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

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

เมื่อเข้าไปอยู่ภายในเปลือกนั้นแล้ว สิ่งแรกที่ต้องทำคือ ติดตั้งระบบไฟล์ใหม่โดยกำหนดสิทธิ์ในการเขียนเนื่องจากส่วนใหญ่จะอยู่ในโหมดอ่านอย่างเดียว:

mount -o rw,remount /

จากนั้น คุณสามารถใช้คำสั่งมาตรฐานเพื่อตั้งรหัสผ่านใหม่ได้:

passwd root

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

sync
reboot

เมื่อรีบูต บัญชีผู้ใช้ระดับสูงสุด (root account) จะมีรหัสผ่านที่คุณเพิ่งตั้งไว้ดังนั้นคุณจึงสามารถใช้ได้เมื่อจำเป็น (โดยควรใช้ในปริมาณที่พอเหมาะและด้วยความระมัดระวัง)

หากระบบไม่เริ่มทำงานเลย คุณสามารถใช้วิธีอื่นได้ LiveCD หรือ LiveUSB จากระบบปฏิบัติการ Linuxตัวอย่างเช่น Ubuntu บูตจากสื่อนั้น เลือกตัวเลือก "ลองใช้" โดยไม่ต้องติดตั้ง และเปิดเทอร์มินัล โดยปกติแล้ว คุณจะต้องเข้าสู่โหมด root ในสภาพแวดล้อมแบบ Live ด้วยคำสั่ง:

sudo su

ขั้นตอนต่อไป คุณต้องค้นหาพาร์ติชั่นที่ติดตั้งระบบที่ต้องการซ่อมแซม โดยใช้เครื่องมืออย่างเช่น:

fdisk -l

เมื่อคุณระบุอุปกรณ์ที่ถูกต้องแล้ว (ตัวอย่างเช่น /dev/sda1) ให้ทำการเมานต์อุปกรณ์นั้นในโฟลเดอร์ที่ใช้งานได้:

mkdir /mnt/recover
mount /dev/sda1 /mnt/recover

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

chroot /mnt/recover

จากตรงนั้นคุณสามารถวิ่งได้:

passwd root

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

สิทธิ์การเข้าถึงระดับรูทใน Ubuntu และนโยบายความปลอดภัย

Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Ubuntu หลายตัว (เช่น Xubuntu, Kubuntu, Linux Mint เป็นต้น) ได้สร้างแบบจำลองความปลอดภัยของตนบนแนวคิดที่ชัดเจนมาก: สิทธิ์ root มีอยู่จริง แต่โดยส่วนใหญ่แล้วมักถูกใช้งานทางอ้อมผ่านคำสั่ง sudoวิธีนี้มีข้อดีหลายประการทั้งในด้านการใช้งานจริงและด้านความปลอดภัย

ในการติดตั้งแบบมาตรฐาน ไม่มีการกำหนดรหัสผ่านสำหรับสิทธิ์ rootวิธีนี้จะป้องกันไม่ให้ผู้ใช้ล็อกอินโดยตรงด้วยบัญชีนี้ทั้งในเทอร์มินัล TTY และสภาพแวดล้อมกราฟิก แต่ผู้ใช้คนแรกที่สร้างขึ้นระหว่างการติดตั้งจะถูกเพิ่มเข้าไปในกลุ่ม sudo และการทำงานด้านการดูแลระบบทั้งหมดจะดำเนินการโดยการยกระดับสิทธิ์จากบัญชีนั้น

แนวทางนี้ ลดพื้นผิวการโจมตี มันช่วยป้องกันการโจมตีแบบเดาแบบสุ่ม (brute-force attack) ต่อบัญชีผู้ใช้ระดับ root (เช่น ผ่าน SSH) และลดโอกาสที่ความผิดพลาดของมนุษย์จะส่งผลร้ายแรง เนื่องจากมันบังคับให้ผู้ดูแลระบบต้องคิดทุกครั้งที่ใช้คำสั่ง sudo

ในบางบริบทที่เฉพาะเจาะจงมาก (เช่น ห้องปฏิบัติการ สภาพแวดล้อมในการกู้ภัย เครื่องจักรที่มีการแยกตัวสูง) อาจมีความเหมาะสม กำหนดรหัสผ่านให้กับ root ด้วยคำสั่ง sudo passwd root และอนุญาตให้เข้าสู่ระบบโดยตรงได้ แต่ควรพิจารณาว่านี่เป็นมาตรการชั่วคราวเท่านั้น เมื่อแก้ไขปัญหาได้แล้ว ควรล็อกบัญชีอีกครั้งและใช้งาน sudo ต่อไป

นอกจากนี้ สำหรับงานที่ต้องการสิทธิ์เข้าถึงระดับ root อย่างต่อเนื่อง Ubuntu ยังมีคำสั่งต่างๆ เช่น:

sudo -i o sudo su -

นี้ ฟังก์ชันนี้จำลองการเข้าสู่ระบบด้วยสิทธิ์ root อย่างเต็มรูปแบบ พร้อมด้วยสภาพแวดล้อมและ PATH ของตนเองวิธีนี้มีประโยชน์สำหรับสคริปต์และเครื่องมือที่คาดว่าจะอยู่ในสภาพแวดล้อม root ที่ "บริสุทธิ์" เพื่อให้ทำงานได้อย่างถูกต้องโดยไม่จำเป็นต้องเปิดใช้งานการเข้าสู่ระบบโดยตรงแบบถาวร

การเข้าถึงระดับรูทผ่าน SSH: การเปิดใช้งาน การปิดใช้งาน และการรักษาความปลอดภัย

ในเซิร์ฟเวอร์ระยะไกล ปัญหาเรื่องสิทธิ์การเข้าถึงระดับรูทจะยิ่งมีความสำคัญมากขึ้น โดยค่าเริ่มต้น การติดตั้ง Ubuntu ส่วนใหญ่ พวกเขาปิดใช้งานการเข้าสู่ระบบ root โดยตรงผ่าน SSHวิธีนี้จะบังคับให้คุณล็อกอินด้วยบัญชีผู้ใช้ปกติก่อน แล้วจึงใช้คำสั่ง sudo ซึ่งเป็นมาตรการรักษาความปลอดภัยที่สำคัญเพื่อป้องกันการโจมตีแบบอัตโนมัติ

หากด้วยเหตุผลอันสมควร คุณจำเป็นต้องเปิดใช้งานการเข้าถึงนั้น ขั้นตอนพื้นฐานมีดังนี้: ขั้นแรก กำหนดรหัสผ่านให้กับผู้ใช้ root ถ้าคุณไม่มี:

sudo passwd root

จากนั้นแก้ไขการตั้งค่าเซิร์ฟเวอร์ SSH:

sudo nano /etc/ssh/sshd_config

ภายในไฟล์นี้ ให้มองหาคำสั่งนี้ สิทธิ์รูทเข้าสู่ระบบหากบรรทัดนี้ถูกคอมเมนต์ไว้หรืออยู่ในไฟล์ "prohibit-password" คุณสามารถเปลี่ยนเป็น:

PermitRootLogin yes

บันทึกการเปลี่ยนแปลงและเริ่มบริการใหม่:

sudo systemctl restart ssh

จากตรงนั้น คุณสามารถล็อกอินโดยตรงในฐานะ root ผ่าน SSH ได้ ซึ่งเป็นสิ่งที่ หากใช้เพียงรหัสผ่านอย่างเดียว จะก่อให้เกิดช่องโหว่ที่สำคัญอย่างมากวิธีที่ยอมรับได้ขั้นต่ำในกรณีนี้คือการใช้ร่วมกับการตรวจสอบสิทธิ์ด้วยคีย์สาธารณะ และหากเป็นไปได้ ให้จำกัดการเข้าถึงด้วยที่อยู่ IP หรือผ่านเซิร์ฟเวอร์ป้องกัน หรือ VPN

เพื่อพลิกสถานการณ์และเสริมสร้างความมั่นคง ให้แก้ไขใหม่ / etc / SSH / sshd_config และกำหนดค่า:

PermitRootLogin no

หรือหากคุณต้องการกำหนดสิทธิ์การเข้าถึงเฉพาะผู้ที่มีคุณสมบัติสำคัญเท่านั้น:

PermitRootLogin prohibit-password

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

sudo passwd -l root

ดังนั้น การบริหารจัดการระยะไกลทั้งหมดจะต้องดำเนินการผ่านผู้ใช้ทั่วไปและสิทธิ์ sudoโดยจะต้องได้รับการลงทะเบียนและอยู่ภายใต้ข้อกำหนดของไฟล์ sudoers

แนวปฏิบัติที่ดีที่สุดเมื่อใช้สิทธิ์ผู้ดูแลระบบ

การใช้งาน root, sudo และ su อย่างเชี่ยวชาญนั้นไม่ใช่แค่การท่องจำคำสั่ง แต่เป็นเรื่องของการ... ปรับใช้พฤติกรรมที่ช่วยลดความเสี่ยงเมื่อทำงานที่มีสิทธิ์ระดับสูงมีแนวทางปฏิบัติที่เหมาะสมบางประการที่ควรนำไปปรับใช้ในชีวิตประจำวันของคุณ

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

มันก็เป็นกุญแจสำคัญเช่นกัน ห้ามเรียกใช้สคริปต์หรือไฟล์ไบนารีจากแหล่งที่ไม่น่าเชื่อถือในฐานะผู้ใช้ root เด็ดขาดก่อนที่จะรันโค้ดที่คุณคัดลอกมาจากอินเทอร์เน็ต ให้เปิดดูด้วยโปรแกรมแก้ไขข้อความและตรวจสอบอย่างละเอียดว่ามันทำงานอย่างไร หากคุณไม่เข้าใจส่วนใดส่วนหนึ่ง ให้ระแวงไว้ก่อน สำหรับซอฟต์แวร์ที่ดาวน์โหลดมา ควรดาวน์โหลดจากแหล่งที่ได้รับอนุญาตอย่างเป็นทางการ เว็บไซต์ของโครงการ หรือแหล่งที่น่าเชื่อถืออื่นๆ และตรวจสอบค่าตรวจสอบความถูกต้อง (checksum) หากผู้พัฒนาเผยแพร่ไว้

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

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

โดยการติดตามตรวจสอบแง่มุมเหล่านี้และเคารพในแนวคิดที่ว่า Root เป็นเครื่องมือสำหรับสถานการณ์เฉพาะ ไม่ใช่เครื่องมือที่ใช้ทดสอบความสามารถอย่างหนักหน่วงในงานประจำวันคุณสามารถใช้ประโยชน์จากความยืดหยุ่นของ Linux ได้อย่างเต็มที่โดยไม่ต้องเสี่ยงต่อเสถียรภาพและความปลอดภัยของระบบโดยไม่จำเป็น

ระบบนิเวศของลินุกซ์พึ่งพาการแบ่งแยกอย่างมากระหว่างผู้ใช้ทั่วไปและผู้ใช้ระดับสูง และกลไกต่างๆ เช่น sudo และ su เพื่อสลับไปมาระหว่างผู้ใช้ทั้งสองเมื่อจำเป็นเท่านั้น การทำความเข้าใจวิธีการทำงานของ root เมื่อใดควรใช้ วิธีจำกัดการใช้งาน และวิธีกู้คืนในกรณีฉุกเฉิน เป็นกุญแจสำคัญในการจัดการระบบปฏิบัติการใดๆ อย่างชาญฉลาด ไม่ว่าจะเป็นบนแล็ปท็อปส่วนตัวของคุณหรือบนเซิร์ฟเวอร์การผลิตที่สำคัญก็ตาม

วิธีใช้คำสั่ง sudo ใน Linux
บทความที่เกี่ยวข้อง:
วิธีใช้งาน sudo ใน Linux และทำความเข้าใจไฟล์ sudoers อย่างถ่องแท้