4

Я ищу общую библиотеку, которая должна быть загружена с использованием LD_PRELOAD, которая изменила бы представление файловой системы к клиентской программе.

В идеале я хотел бы выбрать корневой каталог файловой системы (или использовать / в качестве корневого) и наложить файловую систему, переименовав имена файлов.

Например, я мог бы попросить мою программу искать /usr /lib /* в /usr /lib32 /*.

Вы знаете о такой программе?

Благодарю.

2 ответа2

0

Есть AVFS, которая немного похожа на это, но я бы, конечно, не рекомендовал эту технику для чего-либо, что заботится о безопасности, так как вам придется исправлять все существующие и будущие библиотечные вещи, которые загружают файлы ...

Альтернативный подход может заключаться в создании фермы chroot / bind-mount. Это также имеет то преимущество, что вы можете монтировать --bind вещи только для чтения, что приятно.

0

PlasticFS может помочь, хотя я думаю (из чтения я не пробовал), он позволяет эффективно создавать синтетическую файловую систему в некоторой точке монтирования (вроде FUSE, но с использованием LD_PRELOAD).

Так, например, вы можете создать синтетический корень в /tmp/myfs , но вам все равно понадобится инструмент, похожий на chroot, чтобы представить это построенное местоположение, как если бы оно было корнем файловой системы. fakechroot - очевидный выбор, так как не требует root, но он также использует LD_PRELOAD поэтому я не уверен, что эти два инструмента перепутают друг друга.


Обновление: это немного сбивает с толку, но я действительно попробовал это сейчас - версии plasticfs вплоть до 1.11 включительно используют LD_PRELOAD (и фактически включают фильтр chroot, поэтому вам не нужно использовать fakechroot). Так что это может быть то, что вы хотите, но:

  • это не очень хорошо работало в моих тестах (создаваемых файлов не должно, пропущенных файлов, которые должны были там быть)

  • более новые выпуски (1.11 был выпущен в 2007 году, сейчас он до 1.14) полностью отказались от LD_PRELOAD для FUSE и пары команд mount и umount stateful, что также лишило возможности использовать его в качестве chroot.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .