TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #105 7.31K
Слышали про chroot?

Chroot (change root) - это утилита, которая используется для того, чтобы создать закрытое окружение "тюрьму", в которой программа будет видеть определенную часть файловой системы, как корневую '/'.

Это похоже на создание миниатюрного "сейфа" или "контейнера" для запуска приложений. В качестве примера можете вспомнить тот же Docker.

Под капотом chroot использует одноименный системный вызов и в некоторых ситуациях может пригодиться, как дополнительный элемент безопасности, который позволит ограничить набор каталогов и файлов, доступных программе.

Системный вызов chroot()

Каждый процесс обладает корневым каталогом — он представляет собой стартовую точку, от которой интерпретируются абсолютные имена путей, начинающиеся с символа '/'. По умолчанию данным каталогом является реальный корневой каталог файловой системы.

Иногда бывает удобно, чтобы процесс изменил свой корневой каталог. Это может реализовать с помощью системного вызова chroot(). Системный вызов chroot() изменяет корневой каталог процесса на каталог, указанный в аргументе pathname:


#include <unistd.h>
int chroot(const char *pathname);


Затем все абсолютные имена путей интерпретируются, как начинающиеся с указанного местоположения в файловой системе. Иногда это называют заключением в клетку chroot, поскольку программа оказывается замкнутой внутри некоторой части файловой системы.

Моменты, которые стоит учитывать при работе с chroot

Следует 100% помнить, что вызов chroot() не меняет текущий рабочий каталог процесса. Для обеспечения полной безопасности, либо перед, либо после chroot() необходимо выполнить вызов chdir(), иначе процесс сможет использовать относительные пути для доступа к ресурсам вне клетки.

Также, при переходе в пространство chroot, вы можете столкнуться с тем, что ничего не работает) Это и не удивительно, как оболочка будет выполнять команды, которых для нее просто не существует...

Для решения проблемы вам может понадобиться перенести ряд библиотек и программ из "реальной" корневой системы в имитированную либо использовать команду debootstrap, но это уже отдельная история)

Linux++ | IT-Образование
  • 👍 32
  • 🔥 7
  • ❤ 3
  • ⚡ 1
  • 🤯 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →