วิธีตรวจสอบการใช้งานคำสั่ง sudo บน Linux

เผยแพร่แล้ว: 2022-08-24
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

คำสั่ง sudo ให้ผู้ใช้ superuser หรือ root power ไม่ต้องสงสัยเลยว่าคุณให้คำพูดว่า "ด้วยพลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบอันยิ่งใหญ่" ต่อไปนี้เป็นวิธีตรวจสอบว่าพวกเขาฟังหรือไม่

คำสั่ง sudo

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

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

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

วิธีควบคุมการเข้าถึง sudo บน Linux
ที่เกี่ยวข้อง วิธีการควบคุมการเข้าถึง sudo บน Linux

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

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

มีหลายวิธีในการตรวจสอบการใช้งานรูท

ไฟล์ auth.log

ดิสทริบิวชันบางรุ่นเก็บบันทึกการตรวจสอบสิทธิ์ไว้ในไฟล์ชื่อ “auth.log” ด้วยการถือกำเนิดและการดูดซึมอย่างรวดเร็วของ systemd ความต้องการไฟล์ “auth.log” จึงถูกลบออกไป systemd-journal daemon รวมบันทึกของระบบเป็นรูปแบบไบนารีใหม่และ journalctl มีวิธีให้คุณตรวจสอบหรือซักถามบันทึก

หากคุณมีไฟล์ “auth.log” บนคอมพิวเตอร์ Linux ไฟล์นั้นอาจอยู่ในไดเร็กทอรี “/var/log/” แม้ว่าชื่อไฟล์และพาธบางรุ่นจะเป็น “/var/log/audit/audit” .บันทึก."

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

คำสั่งนี้ทำงานบน Ubuntu 22.04

 น้อย /var/log/auth.log 

กำลังดูไฟล์ /var/log/auth.log ด้วย less

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

เนื้อหาของไฟล์ /var/log/auth.log แสดงเป็น less

แม้จะใช้สิ่งอำนวยความสะดวกในการค้นหา less ก็อาจใช้เวลาสักครู่เพื่อค้นหารายการ sudo ที่คุณสนใจ

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

สังเกต sudo ก่อน grep และ ก่อนชื่อไฟล์บันทึก

 sudo grep sudo /var/log/auth.log | grep "แมรี่" 

ใช้ grep เพื่อกรองรายการที่กล่าวถึง mary และ sudo

สิ่งนี้ทำให้เรามีบรรทัดที่มี "sudo" และ "mary" อยู่ในนั้น

เราจะเห็นได้ว่าผู้ใช้ mary ได้รับสิทธิ์ sudo เวลา 15:25 น. และเมื่อเวลา 15:27 น. เธอเปิดไฟล์ fstab ในตัวแก้ไข นั่นคือประเภทของกิจกรรมที่รับประกันการดำน้ำลึกโดยเริ่มจากการแชทกับผู้ใช้

ใช้ journalctl

วิธีที่แนะนำบนการแจกแจง Linux ที่ใช้ systmd คือการใช้คำสั่ง journalctl เพื่อตรวจสอบบันทึกของระบบ

ถ้าเราส่งชื่อของโปรแกรมไปที่ journalctl โปรแกรมจะค้นหาไฟล์บันทึกสำหรับรายการที่มีการอ้างอิงถึงโปรแกรมนั้น เนื่องจาก sudo เป็นเลขฐานสองที่ "/usr/bin/sudo" เราจึงสามารถส่งต่อไปยัง journactl ได้ ตัวเลือก -e (สิ้นสุดเพจเจอร์) บอกให้ journalctl เปิดเพจเจอร์ไฟล์เริ่มต้น ปกติจะ less นี้ หน้าจอจะเลื่อนไปด้านล่างโดยอัตโนมัติเพื่อแสดงรายการล่าสุด

 sudo journalctl -e /usr/bin/sudo 

ใช้ journalctl เพื่อค้นหารายการที่กล่าวถึง sudo

รายการบันทึกที่มีคุณสมบัติ sudo อยู่ในรายการน้อยกว่า

journalctl แสดงรายการที่มี sudo ในโปรแกรมดูไฟล์น้อย

ใช้ปุ่ม "RightArrow" เพื่อเลื่อนไปทางขวาเพื่อดูคำสั่งที่ใช้กับคำสั่ง sudo แต่ละรายการ (หรือยืดหน้าต่างเทอร์มินัลของคุณให้กว้างขึ้น)

เลื่อนไปด้านข้างเพื่อดูคำสั่งที่ใช้กับ sudo

และเนื่องจากผลลัพธ์จะแสดงเป็น less คุณจึงสามารถค้นหาข้อความ เช่น ชื่อคำสั่ง ชื่อผู้ใช้ และการประทับเวลา

ที่เกี่ยวข้อง: วิธีใช้ journalctl เพื่ออ่านบันทึกระบบ Linux

การใช้ยูทิลิตี้บันทึกของ GNOME

สภาพแวดล้อมเดสก์ท็อปแบบกราฟิกมักจะมีวิธีการตรวจสอบบันทึก เราจะดูยูทิลิตี้บันทึกของ GNOME ในการเข้าถึงยูทิลิตี้บันทึก ให้กดปุ่ม "Super" ทางด้านซ้ายของ "Spacebar"

พิมพ์ “logs” ในช่องค้นหา ไอคอน "บันทึก" จะปรากฏขึ้น

คลิกไอคอนเพื่อเปิดแอปพลิเคชัน "บันทึก"

แอปพลิเคชันบันทึก GNOME

การคลิกที่หมวดหมู่ในแถบด้านข้างจะกรองข้อความบันทึกตามประเภทข้อความ หากต้องการทำการเลือกที่ละเอียดยิ่งขึ้น ให้คลิกหมวดหมู่ “ทั้งหมด” ในแถบด้านข้าง จากนั้นคลิกไอคอนแว่นขยายบนแถบเครื่องมือ ป้อนข้อความค้นหา เราจะค้นหาคำว่า "sudo"

ค้นหารายการที่มี sudo ในแอปพลิเคชันบันทึก GNOME

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

บล็อกสีเทาที่มีจำนวนรายการใน sudo session

เราคลิกที่บรรทัดบนสุดเพื่อดูรายละเอียดของ 24 รายการในเซสชันนั้น

รายละเอียดของเหตุการณ์ที่แสดงในมุมมองแบบขยาย

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

ไม่ใช่ทุกคนที่ต้องการการเข้าถึงรูท

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