Suchen Sie mit LD_PRELOAD nach einem Dateisystem-Overlay

4

Ich suche eine gemeinsam genutzte Bibliothek, die mit LD_PRELOAD geladen werden soll, um die Ansicht des Dateisystems auf das Client-Programm zu ändern.

Im Idealfall möchte ich das Dateisystem-Stammverzeichnis auswählen (oder / als Stammverzeichnis verwenden) und das Dateisystem durch Umbenennen von Dateinamen überlagern.

Zum Beispiel könnte ich meinem Programm anweisen, stattdessen nach / usr / lib / * in / usr / lib32 / * zu suchen.

Kennen Sie ein solches Programm?

Vielen Dank.

user36520
quelle

Antworten:

0

Es gibt AVFS, das ein bisschen so ist, aber ich würde die Technik auf keinen Fall für etwas Sicherheitsbewusstes empfehlen, da Sie alle gegenwärtigen und zukünftigen Bibliothekssachen patchen müssten, die Dateien frobten ...

Ein alternativer Ansatz könnte darin bestehen, eine chroot / bind-mount-Farm zu erstellen. Das hat auch den Vorteil, dass Sie --bind things read-only mounten können, was nett ist.

Anders Eurenius
quelle
0

PlasticFS kann helfen, obwohl ich denke (ich habe es noch nicht ausprobiert), dass es Ihnen ermöglicht, effektiv ein synthetisches Dateisystem an einem bestimmten Einhängepunkt zu erstellen (ähnlich wie FUSE, aber mit LD_PRELOAD).

Sie können also zB ein synthetisches Stammverzeichnis unter erstellen /tmp/myfs, benötigen aber dennoch ein chroot-ähnliches Tool, um diesen erstellten Speicherort so darzustellen, als wäre er das Stammverzeichnis des Dateisystems. fakechroot ist eine naheliegende Wahl, wenn man kein root benötigt, aber es wird auch verwendet, LD_PRELOADdaher bin ich mir nicht sicher, ob sich die beiden Tools gegenseitig verwirren würden.


Update: Es ist ein wenig verwirrend, aber ich habe es jetzt tatsächlich ausprobiert - Versionen von plasticfs bis einschließlich 1.11 verwenden LD_PRELOAD (und enthalten tatsächlich einen "chroot" -Filter, sodass Sie nicht fakechroot verwenden müssen). Das ist vielleicht das, was Sie wollen, aber:

  • In meinen Tests hat es nicht sehr gut funktioniert (erstellte Dateien sollten es nicht sein, verpasste Dateien, die dort hätten sein sollen)

  • Neuere Releases (1.11 wurde 2007 veröffentlicht, jetzt ist es 1.14) haben LD_PRELOAD vollständig für FUSE und ein paar mountund umountzustandsbehaftete Befehle aufgegeben , wodurch auch die Möglichkeit, es als Chroot zu verwenden, weggefallen ist.

gfxmonk
quelle