Как достигнуть эффекта chroot в пространстве пользователя в Linux (не будучи корнем)?

Это было бы полностью до аппаратных средств, так как это полагается на наличие дополнительного соединения на разъеме. Большинство ПК не имеет аппаратных средств способными к получению сигнала, так как у них только есть 3 соединения, не 4.

5
17.04.2013, 06:00
2 ответа

Решение должно, вероятно, базироваться или на ptrace или на пространствах имен (недоля).

находящиеся в ptrace решения, вероятно, менее эффективны затем namespaces/unshare-based (но последняя технология является ультрасовременной и не хорошо исследуется путь, вероятно).

находящийся в ptrace

UMView

Что касается находящихся в 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

Geordi (http://www.eelis.net/geordi/, https://github.com/Eelis/geordi) мог, вероятно, быть изменен для создания требуемой перезаписи аргументов файла к системным вызовам в заключенных в тюрьму программах.

proot

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
9
27.01.2020, 20:35
  • 1
    Вы спрашиваете и отвечаете на simultaneosly? –  Hauke Laging 17.04.2013, 07:22
  • 2
    @HaukeLaging Это поощряется, если Вы думаете информация, будет полезен для других –  Michael Mrozek♦ 18.04.2013, 02:35
  • 3
    @HaukeLaging, Поскольку я поставил этот вопрос мне (и начал записывать вопрос), я начал искать решения, так очень скоро я уже получил понимание возможных решений и записал это как ответ. Немного позже я discoveren еще один инструмент, чтобы сделать этот (proot), возможно, самое удобное, и добавил его к ответу. –  imz -- Ivan Zakharyaschev 20.04.2013, 16:11
  • 4
    bubblewrap является действительно хорошим основанным на недоле chroot/mount - связывают замену: github.com/projectatomic/bubblewrap –  user2303 30.09.2016, 16:45

Вы можете попробовать Пользователь -Режим Linux . Код для сборки такого ядра теперь присутствует в основных источниках, и вы можете найти (устаревшие )предварительно скомпилированные сборки на странице, на которую я дал ссылку.

1
27.01.2020, 20:35

Теги

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