chroot
бесполезен для безопасности (хорошо по другим причинам, например, для запуска программ, которым это нужно), если пользователь является пользователем root, потому что изменение текущего chroot требует привилегий root. Таким образом, пользователь root с правами chroot
просто должен сделать chroot /
для выхода.
В Linux LXC использует пространство имен для эффективного создания облегченной виртуальной машины. Я экспериментировал с этим пару лет назад и считаю, что root мог выйти из LXC, получив доступ к файловой системе /proc
, которая предоставляет интерфейс для создания и управления существующими контейнерами. Это может быть лучше сейчас.
В целях безопасности лучшее, что я знаю в настоящее время, - это создание виртуальной машины с использованием некоторого типа программного обеспечения виртуальной машины, будь то VMWare, QEMU или другое. В частности, QEMU поддерживает удаление прав после запуска виртуальной машины, поэтому вся виртуальная машина не будет иметь корневых привилегий в системе - это, конечно, не повлияет на все, что происходит в виртуальной машине.
Вам нужно будет воссоздать ту среду, которая вам нужна, на виртуальной машине, и, поскольку виртуальная машина представляет собой отдельную физическую систему, вам придется отдельно обновлять ее, предоставлять достаточно дискового пространства для полной ОС и т.д. Но программы, работающие на ВМ, не могут избежать ее, исключая любые уязвимости в программном обеспечении ВМ.