/lib64/ld-linux-x86-64.so.2とは何ですか。なぜファイルの実行に使用できるのですか?


16

最近、ファイルに実行権限がない場合、を使用してそのファイルを実行できるというトリックを学びました/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」を呼び出しました。このプログラムは通常fileに存在し/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.