/Lib64/ld-linux-x86-64.so.2 là gì và tại sao nó có thể được sử dụng để thực thi tập tin?


16

Gần đây, tôi đã học được một mẹo rằng nếu một tệp thiếu quyền thực thi, chúng ta có thể chạy tệp đó bằng cách sử dụng /lib64/ld-linux-x86-64.so.2.

Ví dụ: để khôi phục quyền x cho

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

chúng ta có thể chạy

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

Tôi thực sự không biết làm thế nào nó có thể được thực hiện, nó không phải là một thứ thông thường, loại bí ẩn.

Câu trả lời:


18

Đó là trình liên kết động; nếu bạn tự chạy nó, nó sẽ cho bạn biết nó làm gì:

Sử dụng: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]

Bạn đã gọi 'ld.so', chương trình trợ giúp cho các tệp thực thi thư viện dùng chung. Chương trình này thường sống trong tệp /lib/ld.sovà các chỉ thị đặc biệt trong các tệp thực thi sử dụng các thư viện chia sẻ ELF cho trình tải chương trình của hệ thống tải chương trình trợ giúp từ tệp này. Chương trình trợ giúp này tải các thư viện chia sẻ cần thiết cho chương trình thực thi, chuẩn bị chương trình để chạy và chạy nó. Bạn có thể gọi chương trình trợ giúp này trực tiếp từ dòng lệnh để tải và chạy tệp thực thi ELF; điều này giống như thực thi chính tệp đó, nhưng luôn sử dụng chương trình trợ giúp này từ tệp bạn đã chỉ định, thay vì tệp chương trình trợ giúp được chỉ định trong tệp thực thi mà bạn chạy. Điều này chủ yếu được sử dụng cho các nhà bảo trì để thử nghiệm các phiên bản mới của chương trình trợ giúp này; rất có thể bạn không có ý định chạy chương trình này.

Trình liên kết được sử dụng để chạy các chương trình liên kết động. Khi bạn chạy chmod, kernel chạy hiệu quả /lib64/ld-linux-x86-64.so.2 chmod, như bạn đã làm thủ công; cái sau hoạt động ngay cả khi chmodnhị phân không thực thi được.

Bạn sẽ tìm thấy nhiều chi tiết hơn về điều này trong phần xuất sắc Cách các chương trình được chạy: bài viết nhị phân ELF .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.