Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

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

setuid ทำงานอย่างไร

Setuid ย่อมาจาก SET User ID ในการดำเนินการ . สมมติว่าเรามีไฟล์ปฏิบัติการที่เรียกว่า "identity" ที่สร้างโดยผู้ใช้รูท เมื่อคุณรัน มันจะรันด้วย ID ผู้ใช้ ID กลุ่ม และสิทธิ์ผู้ใช้ของคุณ หาก setuid bit ถูกตั้งค่าในไฟล์ “identity” เมื่อคุณเรียกใช้ ไฟล์นั้นจะถูกเรียกใช้ในฐานะผู้ใช้รูทและสิทธิพิเศษของผู้ใช้

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

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

ผู้ใช้ "john1" เรียกใช้ไฟล์ "identity" ซึ่งจะกลายเป็นกระบวนการในการดำเนินการ ดังที่แสดงในรายการกระบวนการ กระบวนการจะถูกสร้างขึ้นและทำงานภายใต้ชื่อผู้ใช้และ ID ผู้ใช้ “john1”

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

ต่อไป ในฐานะผู้ใช้รูท เราตั้งค่าบิต setuid ของไฟล์ “identity”:

chmod u+s /usr/bin/identity

“u” หมายถึง setuid bit (+s) ที่กำหนดให้ผู้ใช้เท่านั้น

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

สำหรับเจ้าของ ในส่วนปฏิบัติการของสตริงการอนุญาต เราจะเห็นว่า “x” ถูกแทนที่ด้วย “s” เมื่อใดก็ตามที่คุณพบ "s" สำหรับไฟล์สั่งการ แสดงว่ามีการตั้งค่าบิต setuid ไว้

ตัวแปรตัวเลขของ chmod สามารถใช้คำสั่งได้ตามที่แสดงด้านล่าง

chmod 4755 /usr/bin/identity

การเพิ่ม 4 ในสตริงการอนุญาตที่เป็นตัวเลขหมายถึงการรวมบิต setuid

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

วิธีที่ Setuid อนุญาตให้ผู้ใช้เรียกใช้ไฟล์ด้วยสิทธิพิเศษที่เพิ่มขึ้น

การใช้งานที่สำคัญของ setuid บิต

ส่วนใหญ่คุณจะได้ยินจากผู้เชี่ยวชาญว่าคุณไม่ควรเรียกใช้แอปพลิเคชันในฐานะผู้ใช้รูท อย่างไรก็ตาม มีบางกรณีที่จำเป็นต้องเรียกใช้ไฟล์บางไฟล์โดยได้รับอนุญาตจากรูท ตัวอย่างเช่น passwd ยูทิลิตี้ที่ติดตั้งโดยค่าเริ่มต้นบนระบบ Linux จะมีการตั้งค่าบิต setuid ไว้

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

Setuid Security Risk

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

บทสรุป

Setuid สามารถตั้งค่าได้ในไฟล์ปฏิบัติการเท่านั้น ในทำนองเดียวกัน setgid สามารถตั้งค่าบิตได้เช่นกัน ซึ่งช่วยให้สมาชิกทุกคนในกลุ่มสามารถเรียกใช้ไฟล์สั่งการโดยได้รับอนุญาตจากเจ้าของ

โปรดทราบว่า setuid และ setgid บิตมีความอ่อนไหวต่อความปลอดภัยและต้องใช้โดยผู้ดูแลระบบที่ผ่านการรับรองเท่านั้น

อ่านต่อ:

  • วิธีใช้ Sticky Bit เพื่อจัดการไฟล์บน Shared Directory ใน Linux
  • วิธีการตรวจสอบการสะกดใน Linux Terminal
  • การใช้ find,location, which and whereis Commands to Search for Files in Linux