Was ist /lib64/ld-linux-x86-64.so.2 und warum kann damit eine Datei ausgeführt werden?

16

Kürzlich habe ich einen Trick kennengelernt, der besagt, dass eine Datei, für die keine ausführbaren Berechtigungen vorhanden sind, mithilfe von ausgeführt werden kann /lib64/ld-linux-x86-64.so.2.

Zum Beispiel, um die x-Berechtigung für wiederherzustellen

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

wir können rennen

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

Ich weiß wirklich nicht, wie es gemacht werden kann, es ist kein normales Zeug, eine Art Rätsel.

Federal Reserve
quelle

Antworten:

18

Das ist der dynamische Linker. Wenn Sie es alleine ausführen, erfahren Sie, was es tut:

Verwendung: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]

Sie haben 'ld.so' aufgerufen, das Hilfsprogramm für ausführbare Dateien für gemeinsam genutzte Bibliotheken. Dieses Programm befindet sich normalerweise in der Datei /lib/ld.so, und spezielle Anweisungen in ausführbaren Dateien, die gemeinsam genutzte ELF-Bibliotheken verwenden, weisen den Programmlader des Systems an, das Hilfsprogramm aus dieser Datei zu laden. Dieses Hilfsprogramm lädt die gemeinsam genutzten Bibliotheken, die von der ausführbaren Programmdatei benötigt werden, bereitet das Programm für die Ausführung vor und führt es aus. Sie können dieses Hilfsprogramm direkt über die Befehlszeile aufrufen, um eine ausführbare ELF-Datei zu laden und auszuführen. Dies entspricht dem Ausführen dieser Datei selbst, verwendet jedoch immer dieses Hilfsprogramm aus der von Ihnen angegebenen Datei anstelle der Hilfsprogrammdatei, die in der von Ihnen ausgeführten ausführbaren Datei angegeben ist. Dies ist vor allem für Betreuer nützlich, um neue Versionen dieses Hilfsprogramms zu testen. Sie haben wahrscheinlich nicht vorgehabt, dieses Programm auszuführen.

Der Linker wird verwendet, um dynamisch verknüpfte Programme auszuführen. Wenn Sie ausführen chmod, wird der Kernel /lib64/ld-linux-x86-64.so.2 chmodwie manuell ausgeführt. Letzteres funktioniert auch, wenn die chmodBinärdatei nicht ausführbar ist.

Ausführlichere Informationen hierzu finden Sie im hervorragenden Artikel Wie Programme ausgeführt werden: ELF-Binärdateien .

Stephen Kitt
quelle