Запустите исполняемый файл с пользовательским корневым каталогом
Как я могу запустить исполняемый файл, чтобы он думал, что корневой каталог находится по произвольному пути, а не по фактическому корневому каталогу. Я думал, что это будет возможно с песочницей-exec, но я пока не нашел никаких путей.
1 ответ
Общий термин в Unix-подобных операционных системах для запуска процесса с выделенным корневым каталогом: chroot
(сокращение от "изменить корневой каталог").
Канонический способ сделать это что-то вроде:
$ mkdir /tmp/chroot-dir
$ cp /bin/sh /tmp/chroot-dir/
$ chroot /tmp/chroot-dir /sh
Предполагая, что вы выполнили команду execute на /tmp, это изменит корневой каталог так, что /tmp/chroot-dir
становится новым /
для этого процесса, затем выполните /sh
в контексте этого. Возможно, что chroot
потребует от вас быть пользователем root; в этом случае заменить sudo chroot
за chroot
, Когда вы выйдете из порожденной оболочки, все вернется в норму.
Поскольку / bin / sh, вероятно, нужны некоторые библиотеки, конкретный пример, скорее всего, потерпит неудачу, но он укажет вам правильное направление для того, что еще нужно. В Linux работает ldd /bin/sh
скажет вам, какие дополнительные библиотеки требуются; OS X, вероятно, имеет нечто подобное, если не то же самое. Нетривиальному программному обеспечению также часто требуются файлы конфигурации, узлы устройств и другие шансы, доступные в его представлении файловой системы.
Ориентированное на потребителя программное обеспечение, как правило, не очень хорошо подходит для того, чтобы его можно было синхронизировать без значительных усилий, но серверное программное обеспечение часто может быть получено с помощью сравнительно небольших усилий, а некоторые даже поставляются с документацией о том, что именно нужно.