тюрьма chroot, которая может получить доступ к файловой системе

Пока Ваш хост соглашается с Вашим доменным именем, указывая его или не в /etc/hosts ничего не изменит. Другая практика должна иметь указанный как domain параметр в /etc/resolv.conf. Не указывая это могло упростить Вашу жизнь, если, однажды, Ваш администратор сети изменяет его. Определение его ничего не изменяет, насколько я знаю.

Необходимо определенно уехать 127.0.0.1 localhost или 127.0.0.1 localhost localhost.localdomain в /etc/hosts. Некоторые приложения могли начать иметь действительно странное поведение, localhost связывает с чем-либо кроме Вашего петлевого адреса, потому что это действительно, действительно, неожиданная установка.

5
03.07.2014, 20:19
2 ответа

Вы можете привязать каталоги монтирования к корневому корневому каталогу с помощью:

mount -o bind /x/y /chroot/x/y

(см. man mount , раздел «Связь монтирования»). Любой доступ к / chroot / x / y отныне действует точно так же, как доступ к / x / y : те же списки файлов, то же содержимое, те же inodes.

Обратите внимание, однако, что это помещает весь каталог как есть: процесс внутри chroot, который может писать в каталог , сможет писать в «настоящий» каталог снаружи. Если вы хотите сделать монтирование внутри chroot только для чтения, вам необходимо перемонтировать явно только для чтения после связывания:

mount -o remount,ro /chroot/x/y

Исходный / x / y останется для чтения-записи, но копия теперь будет только для чтения.

Чтобы предпочесть внутренние копии файлов или разрешить запись в некоторые существующие файлы или каталоги, не затрагивая оригиналы, вы можете использовать объединенную файловую систему . Они позволяют накладывать несколько деревьев каталогов друг на друга, указывая, куда идут записи и порядок чтения разрешается. Общие файловые системы union для Linux включают aufs , Unionfs и unionfs-fuse . Первые два из них являются модулями ядра, а последний использует FUSE для запуска файловой системы в пространстве пользователя. Модули ядра, как правило, быстрее, но версию FUSE может быть проще настроить, хотя вы все равно можете избежать использования внешних инструментов пользовательского пространства из chroot. Вы можете подготовить нужные файловые системы union, а затем подключиться к ним chroot.

В каждом случае основной подход один и тот же, например:

unionfs-fuse -o cow /jail/bin:/other/bin:/bin /chroot/bin

Это создает объединенное монтирование в / chroot / bin , которое дает файлы из / jail / bin приоритет, если они существуют, попробуйте / other / bin / , в противном случае покажите файлы из / bin . -o cow выполняет копирование при записи: пытается записать, скажем, в / chroot / bin / foo , копирует / bin / foo в / jail / bin / foo и сохраните туда изменения. Если вы не хотите такого поведения, оставьте эту опцию вне поля зрения. Другие файловые системы имеют немного другие конфигурации, но принцип тот же.

Каким бы способом вы это ни настроили, вы могли:

chroot /chroot

и все работало так, как вы хотели.

7
27.01.2020, 20:35

mount -o bind должен сделать это для полных каталогов.

mount -o bind /bin /chroot/bin
chroot /chroot

В итоге получится копия вашей системы /bin внутри chroot.

Чтобы ваша копия bash supersede /chroot/bin/bash обрабатывала ее так же, как мы делаем это сегодня, поместите ее в /chroot/usr/local/bin и установите PATH соответственно.

.
2
27.01.2020, 20:35

Теги

Похожие вопросы