Ich experimentiere mit ELF- RUNPATH
Variablen für dynamische Abhängigkeiten. Dabei habe ich eine Kopie der bash
Binärdatei mit geänderten Werten erhalten. Wenn ich sie RUNPATH
ausführe, ldd
wird Folgendes zurückgegeben:
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffe6bdf9000)
libtinfo.so.5 (0x00007fbf8b97c000)
libdl.so.2 (0x00007fbf8b776000)
libc.so.6 (0x00007fbf8b3a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbf8bba7000)
- warum gibt es keine Pfade zu den Abhängigkeiten (von meiner benutzerdefinierten RUNPATH
) oder not found
was bedeutet das?
Meine Vermutung wäre:
ldd
Die Dateien können nicht gefunden werden, aber sie sind im Speicher (die Zahlen in den Klammern sind die Adressen) und ldd
erfährt irgendwie davon, über einen Cash-Mechanismus, ist das richtig? Aber wie kommt es dann, dass ldd
die Dateien nicht gefunden werden? Wenn sie nicht abgerufen werden können RUNPATH
, sollte es doch zu den Standardverzeichnissen übergehen, oder?
Aktualisieren
Heute findet er die Dateien (waren es also gestern die Cashes?):
$ cd dir_chroot2/
$ ldd ./bash
linux-vdso.so.1 => (0x00007ffed3530000)
libtinfo.so.5 => /home/.../dir_chroot2/./libtinfo.so.5 (0x00007f72c14a8000)
libdl.so.2 => /home/.../dir_chroot2/./libdl.so.2 (0x00007f72c12a1000)
libc.so.6 => /home/.../dir_chroot2/./libc.so.6 (0x00007f72c0ed0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f72c16d4000)
-- wird aber ld-linux-x86-64.so.2
trotzdem aus dem Systemverzeichnis abgerufen, obwohl bash
die Binärdatei und alle darüber liegenden Bibliotheken vorhanden sind RUNPATH=$ORIGIN/
. Warum ist das so? Ist linux-vdso.so.1
es irgendwie verknüpft?