Какой основной недостаток у chroot в Linux с точки зрения изоляции?

«Какой основной недостаток у chroot в Linux с точки зрения изоляции?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основной недостаток chroot — это отсутствие полноценной изоляции. Он изолирует только файловую систему процесса, но не ограничивает доступ к другим критическим ресурсам ядра. Процесс внутри chroot:

  • Видит все процессы системы через /proc (если он смонтирован).
  • Имеет доступ к сетевым интерфейсам и сокетам.
  • Может работать с устройствами через /dev.
  • Может потреблять неограниченные ресурсы CPU и памяти.
  • Может быть скомпрометирован привилегированным пользователем (root), который может выйти из окружения, например, повторно вызвав chroot().

Поэтому chroot не является безопасным механизмом для контейнеризации или запуска ненадежного кода. Для изоляции используются namespaces (изолирующие процессы, сеть, пользователей и т.д.) в сочетании с cgroups (для ограничения ресурсов), что и лежит в основе современных контейнерных технологий (Docker, Podman).