ค้นหาเว็บไซต์

แก้ไข 'ชื่อผู้ใช้ไม่อยู่ในไฟล์ Sudoers' เหตุการณ์นี้จะถูกรายงาน


ในระบบ Unix/Linux บัญชีผู้ใช้รูทคือบัญชีผู้ใช้ขั้นสูง ดังนั้นจึงสามารถใช้เพื่อทำทุกอย่างที่ทำได้บนระบบ

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

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

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

sudo ที่เสียหายอาจเกิดจากสาเหตุใดๆ ต่อไปนี้:

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

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

ด้านล่างนี้เป็นภาพแสดงกรณีที่ผู้ใช้ระบบเริ่มต้นถูกป้องกันไม่ให้เรียกใช้คำสั่ง sudo:

tecmint@TecMint ~ $ sudo visudo
[ sudo ] password for aaronkilik:
aaronkilik is not in the sudoers file.   This incident will be reported.

tecmint@TecMint ~ $ sudo apt install vim
[ sudo ] password for aaronkilik:
aaronkilik is not in the sudoers file.   This incident will be reported.

วิธีแก้ไขคำสั่ง sudo ที่เสียหายใน Ubuntu

หากคุณใช้งานเฉพาะ Ubuntu บนเครื่องของคุณ หลังจากเปิดเครื่องแล้ว ให้กดปุ่ม Shift สักครู่เพื่อรับการบูต Grub เมนู. ในทางกลับกัน หากคุณใช้ดูอัลบูต (Ubuntu ควบคู่ไปกับ Windows หรือ Mac OS X) คุณจะเห็นเมนูการบูต Grub เป็นค่าเริ่มต้น

ใช้ ลูกศรลง เลือก “ตัวเลือกขั้นสูงสำหรับ Ubuntu ” แล้วกด Enter

คุณจะอยู่ที่อินเทอร์เฟซด้านล่าง เลือกเคอร์เนลด้วยตัวเลือก “โหมดการกู้คืน ” ตามด้านล่าง และกด Enter เพื่อไปที่ “เมนูการกู้คืน > ”.

ด้านล่างนี้คือ “เมนูการกู้คืน ” ซึ่งระบุว่าระบบไฟล์รูทติดตั้งเป็นแบบอ่านอย่างเดียว เลื่อนไปที่บรรทัด “root Drop to root Shell prompt ” จากนั้นกด Enter

ต่อไป ให้กด Enter เพื่อการบำรุงรักษา:

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

mount -o rw,remount /

การแก้ปัญหากรณี #1 – เพิ่มผู้ใช้ใน sudo หรือกลุ่มผู้ดูแลระบบ

สมมติว่าผู้ใช้ถูกลบออกจากกลุ่ม sudo หากต้องการเพิ่มผู้ใช้กลับไปยังกลุ่ม sudo ให้ออกคำสั่งด้านล่าง:

adduser username sudo

หมายเหตุ: อย่าลืมใช้ชื่อผู้ใช้จริงในระบบ ในกรณีของฉันคือ aaronkilik

หรือภายใต้เงื่อนไขที่ผู้ใช้ถูกลบออกจากกลุ่มผู้ดูแลระบบ ให้รันคำสั่งต่อไปนี้:

adduser username admin

การแก้ไขกรณีที่ 2 – การให้สิทธิ์ sudo แก่ผู้ใช้

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

cp /etc/sudoers /etc/sudoers.orginal

จากนั้น ให้เปิดไฟล์ sudoers

visudo

และเพิ่มเนื้อหาด้านล่าง:

#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbi$

Host alias specification

User alias specification

Cmnd alias specification

User privilege specification
root    ALL=(ALL:ALL) ALL

Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

การแก้ไขกรณีที่ 3 – การตั้งค่าการอนุญาตที่ถูกต้องในไฟล์ sudoers

สมมติว่าการอนุญาตในไฟล์ /etc/sudoers ไม่ได้ถูกตั้งค่าเป็น 0440 ให้รันคำสั่งต่อไปนี้เพื่อทำให้ถูกต้อง:

chmod  0440  /etc/sudoers

สุดท้ายแต่ไม่ท้ายสุด หลังจากที่รันคำสั่งที่จำเป็นทั้งหมดแล้ว ให้พิมพ์คำสั่ง exit เพื่อกลับไปที่ “เมนูการกู้คืน ”:

exit 

ใช้ ลูกศรขวา เพื่อเลือก และกด Enter:

กด เพื่อดำเนินการต่อด้วยลำดับการบู๊ตปกติ:

สรุป

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

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