Википедия говорить о безопасности Chroot, потому что корневой часто сравнивают с sandbox(которые не обеспечивают корневые) или другие с целью обеспечения безопасности с изоляцией.
chroot()(это системный вызов UNIX) - это процесс изменения явного корневого каталога (/
) другому, на который указывает системный вызов. Это означает, что если в изолированной среде исполняемой/реж/цель хочет получить доступ к загрузке /lib/ld-linux.so.2
(жестко закодированный пути в исполняемом файле), реальный доступ будет происходить в /dir/target/lib/ld-linux.so.2
Так это означает, что каждый из файлов и библиотека необходимости программы для доступа необходимо иметь свой обычный реальный путь (с префиксом /
) на путь chrooted (/ dir/target в этом примере). Если вы используете полную систему внутри chroot, вы, наконец, получите структуру каталогов, описанную в man hier
, но префикс (для chrooted программ) с chrooted пути. Это также означает, что вы можете использовать разные двоичные файлы различной архитектуры (если ваш процессор поддерживает несколько, что обеспечивает некоторую изоляцию).
Как вы можете видеть, когда вы смотрите на Chroot, основная цель не смотрите, чтобы обеспечить безопасность, и она используется для других purposes переключения из initramfs корня в Linux с монтируемой корневой на диске (за исключением того, это process mount -o move).
Однако, как указано в Wikipedia article, некоторые реализации, такие как FreeBSD, обеспечивают определенный уровень безопасности: например, отключение возможности создания chroot внутри chroot. Википедия ошибочна, когда говорит, что chroot должен запускаться как root. Большинство систем сегодня имеют больше fine-grained mechanism, чем права пользователя/группы.
Тюнинг предназначен для обеспечения изоляции напрямую, что позволяет ограничить объем ОЗУ процессором, который может использовать процесс; отключение разделяемой памяти; ограничить разрешение ...
Некоторые реализации (например, с командой песочницы) не обеспечивают chroot. Тюки имеют приложения в Operating system–level virtualization или избегают повреждений оставшейся системы, когда testing special code.
Если вы примете пример команды sandbox, вы увидите, что он не может использовать альтернативную структуру корневого каталога самостоятельно.
http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=8478 упоминает qemu-user, который, очевидно, должен тестировать программы, не помещая их на Rasberry Pi. Это отличается от виртуальных машин, поскольку здесь не виртуализировано аппаратное обеспечение: двоичные команды программы преобразуются в нативные, что означает, что системные вызовы обрабатываются так, как если бы программа запускалась изначально.
Приходится использовать другую структуру корневого каталога: некоторые имена общих имен файлов общих для всех распределений и архитектуры (например, /lib/ld-linux.so.2
). Вы не можете смешивать несколько архитектур в один и тот же двоичный файл. Если вы замените общую библиотеку эквивалентом ARM, то файлы не будут использоваться для собственных исполняемых файлов. qemu-пользователь или вся целевая система должны быть скомпилированы статически по той же причине.
Я действительно предлагаю вам установить и настроить binfmt. Это позволит вам запускать программы, как если бы они имели одинаковую архитектуру вашей машины, автоматически запуская команду qemu-arm-static ...
Тогда вы можете захотеть скомпилировать программное обеспечение без кросс-компиляции, просто установив собственную руку компилятор внутри вашего chroot.
, пожалуйста, любой, кто хотел бы предложить по этой теме? – Katoch
Я не знаю о виртуальной среде тюрьмы, но предостерегаю использовать chroot. chroot изменит вашу файловую систему, чтобы корень был изменен, освободив цепочку инструментов, чтобы явно установить пути к инструментам и т. д. Если вы забудете, что вы находитесь в среде chroot или делаете определенные ошибки и не выходите правильно, вы можете уничтожить вашу файловую систему. Это случилось со мной в среде сборки Portage. Вот почему вам нужно быть суперпользователем, чтобы ввести chroot. Обязательно создайте резервные копии своих критических файлов или экспериментируйте в окне разработчика, которое вы можете себе позволить. –