Как подделать / смоделировать каталог, используемый двоичным приложением, как другой каталог?

9

Предположим, есть двоичное приложение, которое всегда записывает свои данные /tmp.

Как я мог подделать / mock /tmpради этого бинарного файла, как какой-то другой каталог (например home/tmp)?

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

Nobilis
источник

Ответы:

11

Вы можете запустить приложение в chrootсреде, то есть /приложение видит не реальное /. Вы создаете совершенно новую иерархию файловой системы и монтируете --bindв нее все, что вам нужно. Соответствующий пункт: Вы можете установить реальные ~/tmpк /tmpв chrootокружающей среде.

Вместо использования chroot(которое требует привилегий суперпользователя) вы можете сделать более или менее то же самое с контейнерами Linux ( lxc). Я не знаком с этим, lxcно поскольку это обычный пользовательский процесс для хост-системы, вам не нужно быть суперпользователем для таких конфигураций в контейнере.

Хауке Лагинг
источник
Великий ответ, я не слышал ни chrootили lxcбыть в состоянии сделать это. Также очень приятно знать, что есть способ сделать это, не будучи суперпользователем.
Нобилис
3
@Nobilis 98 голосов не хватает, чтобы это было признано отличным ответом ...
Hauke ​​Laging
2
Остерегайтесь, однако, это chrootтребует дополнительной настройки (вы заменяете весь /, а не только /tmpлюбой доступ /etc, /varи т. Д., Также будет внутри «тюрьмы») и создает собственные проблемы безопасности («заключенная в тюрьму» программа может уметь манипулировать частями файловой системы, которые обычно были бы недоступны, если вы не будете осторожны с разрешениями при настройке вашей подделки /).
IMSoP
@IMSoP Не могли бы вы объяснить более подробно «может ли быть возможность манипулировать частями файловой системы, которые обычно бывают недоступными»?
Хауке Лагинг
@HaukeLaging Если новое /не ограничено только для записи root, «заключенный в тюрьму» пользователь может создавать или заменять файлы, которые, кажется, находятся в ключевых местах системы, таких как /etc/passwd; затем это можно использовать для повышения привилегий, что было бы невозможно за пределами chroot. Многие FTP-серверы Linux, которые традиционно используют, chrootчтобы скрыть остальную часть файловой системы, теперь отказываются делать это, если каталог доступен для записи пользователю без полномочий root.
IMSoP
8

Большинство POSIX-совместимого программного обеспечения будет учитывать переменную среды TMPDIR, например

env TMPDIR=~/mytmp  /path/to/application
HBruijn
источник