什么是/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

我真的不知道该怎么做,这不是常规的东西,有点神秘。

Answers:


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二进制文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.