Это было бы полностью до аппаратных средств, так как это полагается на наличие дополнительного соединения на разъеме. Большинство ПК не имеет аппаратных средств способными к получению сигнала, так как у них только есть 3 соединения, не 4.
Решение должно, вероятно, базироваться или на ptrace или на пространствах имен (недоля).
находящиеся в ptrace решения, вероятно, менее эффективны затем namespaces/unshare-based (но последняя технология является ультрасовременной и не хорошо исследуется путь, вероятно).
Что касается находящихся в ptrced решений, благодаря комментариям в https://stackoverflow.com/a/1019720/94687, я обнаружил UMView:
Связанные документы описывают, как иметь "представление копии на записи" фс хоста - это точно не похоже на выполнение chroot. Точные инструкции относительно того, как достигнуть/-substitution в umview, были бы хороши иметь в ответе на мой вопрос (запишите тот, если Вы выясняете, как сделать это!).
umview должен быть открытым исходным кодом, потому что он включен в Ubuntu и Debian - http://packages.ubuntu.com/lucid/umview.
Другая реализация описана в http://www.cs.vu.nl/~rutger/publications/jailer.pdf, http://www.cs.vu.nl/~guido/mansion/publications/ps/secrypt07.pdf.
У них есть правило политики корневого луга изменения, CHRDIR, эффект которого подобен chroot. (Раздел "Политика заключения в тюрьму")
Однако они, возможно, не опубликовали свой исходный код (частично на основе измененного strace http://www.liacs.nl/~wichert/strace/ - Раздел "Реализация")...
Geordi (http://www.eelis.net/geordi/, https://github.com/Eelis/geordi) мог, вероятно, быть изменен для создания требуемой перезаписи аргументов файла к системным вызовам в заключенных в тюрьму программах.
PRoot является готовым для использования находящегося в ptrace инструмента для этого. http://proot.me/:
эквивалентный chroot
Для выполнения команды в данном дистрибутиве Linux просто дайте proot путь к гостю rootfs сопровождаемый желаемой командой. Пример ниже выполняет кошку программу для печати содержания файла:
proot -r /mnt/slackware-8.0/ cat /etc/motd Welcome to Slackware Linux 8.0
Команда по умолчанию является/bin/sh, когда ни один не указан. Таким образом самый короткий способ ограничить интерактивную оболочку и все ее подпрограммы:
proot -r /mnt/slackware-8.0/ $ cat /etc/motd Welcome to Slackware Linux 8.0
поддержка user_namespaces в ядре Linux имеет более сформировавшийся с тех пор, когда вопрос задали. Теперь можно играть с выполнением a chroot
как нормальное с помощью unshare
как в Моделируют chroot с недолей:
unshare --user --map-root-user --mount-proc --pid --fork
chroot ......
su - user1
Вы можете попробовать Пользователь -Режим Linux . Код для сборки такого ядра теперь присутствует в основных источниках, и вы можете найти (устаревшие )предварительно скомпилированные сборки на странице, на которую я дал ссылку.