目次

1. บทนำ

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

侍エンジニア塾

2. สิทธิ์ root ใน Ubuntu และลักษณะเฉพาะ

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

2.1 ความแตกต่างระหว่างผู้ใช้ปกติและ root

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

2.2 การให้สิทธิ์ root ชั่วคราวด้วย sudo

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

3. วิธีสลับเป็น root ชั่วคราว

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

3.1 วิธีใช้คำสั่ง sudo เบื้องต้น

“sudo” ย่อมาจาก “substitute user do” เป็นคำสั่งสำหรับสลับสิทธิ์ผู้ใช้ชั่วคราว แม้เป็นผู้ใช้ปกติ แต่เมื่อใช้ sudo ก็จะได้รับสิทธิ์ root กับคำสั่งนั้น ๆ ตัวอย่างการใช้:

$ sudo [คำสั่ง]

เช่น การอัปเดตแพ็คเกจ ให้พิมพ์ดังนี้

$ sudo apt update

คำสั่งนี้สามารถรันได้เฉพาะผู้ใช้ที่มีสิทธิ์ root เมื่อใช้ sudo จึงสามารถยืมสิทธิ์ root มาทำงานชั่วคราว

3.2 การใส่รหัสผ่านเมื่อใช้ sudo

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

3.3 ระยะเวลาการใช้งาน sudo ชั่วคราว

สิทธิ์ root ที่ได้จาก sudo จะมีอายุประมาณ 15 นาที (ค่าดีฟอลต์ใน Ubuntu) หากไม่ต้องการสิทธิ์ root ต่อ ให้ปิดเซสชันหรือยกเลิกสิทธิ์ด้วยตนเอง เช่น ใช้คำสั่ง “sudo -k” เพื่อหมดอายุการยืนยันทันที หลังจากนั้นจะต้องใส่รหัสผ่านใหม่เมื่อใช้ sudo อีกครั้ง

4. วิธีเข้าสู่ root shell

การเข้าสู่ root shell จะช่วยให้สามารถทำงานต่อเนื่องหลายคำสั่งในฐานะ root ได้ เหมาะกับงานจัดการหลายอย่าง Ubuntu สามารถใช้ sudo -i หรือ sudo su เพื่อเข้าสู่ root shell วิธีใช้และจุดเด่นของแต่ละคำสั่งมีดังนี้

4.1 การใช้คำสั่ง sudo -i เพื่อเข้าสู่ root shell

คำสั่ง sudo -i จะเปลี่ยนไปใช้ shell ที่ตั้งค่าสำหรับ root อย่างสมบูรณ์ โดยโหลดโปรไฟล์และ environment ของ root วิธีใช้ดังนี้

$ sudo -i

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

4.2 การใช้คำสั่ง sudo su เพื่อเข้าสู่ root shell

คำสั่ง sudo su คล้ายกับ sudo -i แต่จะไม่โหลด environment ของ root โดยสมบูรณ์ จะคง environment เดิมของผู้ใช้ปัจจุบันไว้ เหมาะกับกรณีที่ไม่ต้องการเปลี่ยนแปลง environment

$ sudo su

การใช้ sudo su จะยังคงเซสชันเดิมไว้แต่เพิ่มสิทธิ์ root เหมาะสำหรับงานที่ต้องการ environment เฉพาะของผู้ใช้หรือ custom shell

4.3 การสลับโดยไม่รับ environment (su -)

ถ้าต้องการตัด environment ของผู้ใช้ปัจจุบันออกหมด ให้ใช้ su - ซึ่งจะเข้าสู่ shell ใหม่ในฐานะ root พร้อมสภาพแวดล้อมดีฟอลต์ของ root

$ su -

5. การสลับเป็น root ด้วย su command

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

5.1 วิธีใช้คำสั่ง su เบื้องต้น

คำสั่ง su ใช้สำหรับสลับผู้ใช้ โดยระบุชื่อผู้ใช้ปลายทางได้ หากต้องการสลับเป็น root ให้ใช้แบบนี้

$ su

คำสั่งนี้จะขอรหัสผ่าน root หากใส่ถูกต้องจะเข้าสู่ shell ของ root เมื่อเสร็จงาน พิมพ์ exit เพื่อกลับเป็นผู้ใช้เดิม

5.2 ความแตกต่างระหว่าง su และ su –

ถ้าใช้ su - จะได้รับ shell พร้อม environment ของผู้ใช้ปลายทาง (root) อย่างสมบูรณ์ เหมาะกับกรณีที่ต้องการสภาพแวดล้อมของ root โดยไม่รับผลกระทบจาก environment ของผู้ใช้เดิม ตัวอย่างการใช้

$ su -

ความแตกต่างระหว่าง su และ su - คือ su จะคง environment เดิมไว้ ส่วน su - จะรีเซ็ตเป็น shell ใหม่ เหมาะกับการตั้งค่าสภาพแวดล้อมสำหรับ root หรือหลีกเลี่ยงผลกระทบจาก environment เก่า

6. ข้อควรระวังด้านความปลอดภัยเมื่อใช้สิทธิ์ root

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

6.1 หลีกเลี่ยงการใช้สิทธิ์ root โดยไม่จำเป็น

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

6.2 ออกจาก root shell ทันทีหลังเสร็จงาน

เมื่อทำงานด้วย root shell เสร็จแล้ว ควรออกจาก shell โดยใช้คำสั่ง exit เพื่อกลับเป็นผู้ใช้ปกติ ถ้าค้างไว้ อาจเกิดคำสั่งผิดพลาดในสิทธิ์ root โดยไม่ได้ตั้งใจ แม้ทำงานไม่นาน ควรสร้างนิสัยออกจาก root shell เพื่อความปลอดภัย

6.3 การตั้งค่าไฟล์ sudoers ให้เหมาะสม

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

6.4 การใช้ audit log

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

7. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข

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

7.1 ข้อผิดพลาด “Permission denied”

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

$ sudo [คำสั่ง]

หากต้องรันคำสั่ง root หลายรายการติดกัน อาจเข้าสู่ root shell จะสะดวกกว่า

7.2 ข้อผิดพลาด “user is not in the sudoers file”

ถ้าผู้ใช้ไม่ได้ถูกกำหนดในไฟล์ sudoers จะไม่สามารถใช้ sudo ได้ และจะพบข้อผิดพลาด user is not in the sudoers file ต้องเข้าสู่บัญชีผู้ดูแลระบบและเพิ่มชื่อผู้ใช้นั้นใน sudoers ด้วยคำสั่ง visudo ตัวอย่างเช่น ให้สิทธิ์ sudo แบบไม่ต้องใส่รหัสผ่าน

username ALL=(ALL) NOPASSWD: ALL

7.3 ปัญหา timeout ของ sudo

หากสั่ง sudo แล้วไม่ขอรหัสผ่าน อาจเป็นเพราะหมดเวลา session ของ sudo ต้องรันคำสั่ง sudo ใหม่และใส่รหัสผ่านอีกครั้ง

7.4 root password ถูกปิดใช้งาน

ใน Ubuntu โดยค่าเริ่มต้น root จะถูกปิดใช้งาน หากใช้ su เพื่อสลับเป็น root แล้วพบ “Authentication failure” ต้องตั้งรหัสผ่าน root ก่อนโดยใช้คำสั่งด้านล่าง

$ sudo passwd root

เมื่อทำเช่นนี้ root จะถูกเปิดใช้งานและตั้งรหัสผ่านใหม่ได้

8. สรุป

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

8.1 สรุปเนื้อหา

  • ความสำคัญของสิทธิ์ root: root จำเป็นสำหรับการเข้าถึงและจัดการระดับลึกในระบบ
  • การให้สิทธิ์ root ชั่วคราวด้วย sudo: ใช้ sudo [คำสั่ง] เพื่อให้สิทธิ์ root เฉพาะเวลาที่จำเป็น ลดความเสี่ยงด้านความปลอดภัย
  • วิธีเข้าสู่ root shell: ใช้ sudo -i หรือ sudo su เพื่อรันคำสั่งหลายรายการด้วยสิทธิ์ root
  • การเลือกใช้ su หรือ su –: เข้าใจความแตกต่างระหว่าง su และ su - เพื่อเลือกใช้ตามวัตถุประสงค์
  • ข้อควรระวังด้านความปลอดภัย: ใช้ root เฉพาะเมื่อจำเป็น และออกจาก root shell ทันทีหลังใช้งาน
  • ข้อผิดพลาดและวิธีแก้ไข: ตรวจสอบไฟล์ sudoers และตั้งค่า root password ตามความจำเป็น

8.2 การใช้ root อย่างปลอดภัย

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

侍エンジニア塾