/lib64/ld-linux-x86-64.so.2 คืออะไรและทำไมจึงสามารถใช้เพื่อเรียกใช้ไฟล์ได้


17

เร็ว ๆ /lib64/ld-linux-x86-64.so.2นี้ผมได้เรียนรู้เคล็ดลับว่าถ้าไฟล์ที่ขาดสิทธิ์ปฏิบัติการเราสามารถเรียกใช้ไฟล์ว่าด้วยการใช้

ตัวอย่างเช่นในการกู้คืนสิทธิ์ x สำหรับ

-rw-r--r-- 1 root root 59K Mar  1  2017 /bin/chmod

เราสามารถวิ่งได้

/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod

ฉันไม่รู้จริง ๆ ว่ามันสามารถทำได้มันไม่ใช่ของปรกติลึกลับชนิดไหน

คำตอบ:


18

นั่นคือตัวเชื่อมโยงแบบไดนามิก หากคุณรันด้วยตัวเองมันจะบอกคุณว่ามันทำอะไร:

การใช้งาน: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]

คุณเรียกใช้ 'ld.so' โปรแกรมตัวช่วยสำหรับไลบรารีที่ใช้ร่วมกันได้ โปรแกรมนี้มักใช้งานในไฟล์/lib/ld.soและคำสั่งพิเศษในไฟล์ปฏิบัติการโดยใช้ไลบรารีที่แบ่งใช้ของ ELF จะบอกตัวโหลดโปรแกรมของระบบเพื่อโหลดโปรแกรมตัวช่วยจากไฟล์นี้ โปรแกรมตัวช่วยนี้โหลดไลบรารีแบบแบ่งใช้ที่ต้องการโดยโปรแกรมที่ดำเนินการได้เตรียมโปรแกรมให้ทำงานและเรียกใช้ คุณสามารถเรียกใช้โปรแกรมตัวช่วยนี้โดยตรงจากบรรทัดคำสั่งเพื่อโหลดและเรียกใช้ไฟล์ปฏิบัติการของ ELF สิ่งนี้เหมือนกับการเรียกใช้ไฟล์นั้น แต่ใช้โปรแกรมตัวช่วยนี้จากไฟล์ที่คุณระบุเสมอแทนที่จะเป็นไฟล์โปรแกรมตัวช่วยที่ระบุในไฟล์เรียกทำงานที่คุณรัน ส่วนใหญ่ใช้สำหรับผู้ดูแลเพื่อทดสอบเวอร์ชันใหม่ของโปรแกรมตัวช่วยนี้ โอกาสที่คุณไม่ได้ตั้งใจจะใช้โปรแกรมนี้

ตัวลิงก์ใช้เพื่อรันโปรแกรมที่ลิงก์แบบไดนามิก เมื่อคุณรันchmodเคอร์เนลจะทำงานได้อย่างมีประสิทธิภาพ/lib64/ld-linux-x86-64.so.2 chmodตามที่คุณทำด้วยตนเอง หลังใช้งานได้แม้ว่าchmodไบนารีจะไม่สามารถเรียกใช้งานได้

คุณจะพบรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในวิธีการที่โปรแกรมทำงานได้ดี:บทความไบนารี ELF

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.