Computer >> คอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

ข้อมูลเบื้องต้นเกี่ยวกับคำสั่ง sudo และไฟล์การกำหนดค่า

คู่มือนี้จะอธิบายว่าคำสั่ง sudo คืออะไร วิธีใช้งานใน Linux และวิธีแก้ไขไฟล์การกำหนดค่า

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

ตามความรู้ของฉัน แพ็คเกจ “sudo” มาพร้อมกับลีนุกซ์รุ่นต่างๆ ดังนั้นฉันจะข้ามการติดตั้งและข้ามไปที่การกำหนดค่าโดยตรง สำหรับบทช่วยสอนนี้ ฉันจะใช้เครื่อง Red Hat Linux เข้าสู่ระบบเครื่อง Linux ของคุณในฐานะ root และเรียกใช้คำสั่งต่อไปนี้บนบรรทัดคำสั่ง:

# ภาพ

คำสั่งดังกล่าวจะเปิดการกำหนดค่า “sudo” ซึ่งอยู่ที่ /etc/sudoers โดยใช้ตัวแก้ไขเริ่มต้นในเครื่องของคุณ ซึ่งเป็น Vim ของฉัน เลื่อนลงไปที่ส่วนที่คุณเห็นข้อความต่อไปนี้:

รูท    ALL=(ALL) ทั้งหมด

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

กลับไปที่การกำหนดค่า ใน Vim ให้เลื่อนลงไปที่บรรทัดที่แสดงด้านบนแล้วกดตัวอักษร o บนแป้นพิมพ์ของคุณเพื่อเพิ่มบรรทัดใหม่ เพิ่มข้อความต่อไปนี้ โดยแทนที่ calvin ด้วยชื่อผู้ใช้ของคุณเอง:

คาลวิน ALL=(ALL) ALL

บันทึกและออกจากไฟล์โดยใช้คีย์ผสมต่อไปนี้:

ESC :wq

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

sudo /etc/init.d/httpd restart
รหัสผ่าน:
กำลังหยุด httpd:                                           [  OK  ]
เริ่มใช้งาน httpd:                       

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

calvin ALL=(ALL) /etc/init.d/httpd เริ่มใหม่

บันทึกและออกจากไฟล์. เข้าสู่ระบบเทอร์มินัลในฐานะผู้ใช้ 'calvin' ตอนนี้ให้ลองรีสตาร์ท Apache ด้วย sudo:

# sudo /etc/init.d/httpd เริ่มใหม่
รหัสผ่าน:
กำลังหยุด httpd:[ ตกลง ]
เริ่ม httpd:[ ตกลง ]

ยอดเยี่ยม. มันได้ผล. ตอนนี้ให้ลองหยุดเว็บเซิร์ฟเวอร์:

# sudo /etc/init.d/httpd หยุด
รหัสผ่าน:
ขออภัย ผู้ใช้ calvin ไม่ได้รับอนุญาตให้ดำเนินการ '/etc/init.d/httpd stop' เป็นรูทบนคอมมอนส์

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

calvin ALL=(ALL) /etc/init.d/httpd restart,/etc/init.d/httpd หยุด

ตอนนี้ให้ลองหยุดเว็บเซิร์ฟเวอร์ และมันน่าจะใช้ได้:

# sudo /etc/init.d/httpd หยุด
รหัสผ่าน:
กำลังหยุด httpd:[ ตกลง ]

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

เปิด sudoers และแก้ไขบรรทัดที่คุณป้อนก่อนหน้านี้ให้มีลักษณะดังนี้:

calvin ALL=(ALL) /etc/init.d/httpd รีสตาร์ท NOPASSWD:ALL

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

# sudo /etc/init.d/httpd เริ่มใหม่
หยุด httpd:[ ตกลง ]
เริ่ม httpd:[ ตกลง ]

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