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


9

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

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

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.