Меню Рубрики

Linux что такое chroot

Linux что такое chroot

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

Например, при активации поддержки chroot служба доменных имен named использует в качестве корневой директории директорию /var/named/ и запускается от лица локального пользователя с именем «named» (с минимальными привилегиями) в отличие от корневой директории системы и учетной записи пользователя root. Поэтому если сервер named будет скомпрометирован взломщиком или вредоносной программой, будут повреждены лишь файлы из директории /var/named (новой корневой директории сервера), ведь служба named не может получить доступ к файлам, находящимися за приделами окружения chroot, а пользователь с именем named не имеет достаточных прав для чтения каких-либо других системных файлов.

Обратите внимание на то, что окружение chroot все же можно покинуть с помощью различных специальных техник. Одна из таких техник связана с созданием файла устройства (с помощью команды mknod) для жесткого диска в рамках окружения chroot и доступом к содержимому этого жесткого диска посредством созданного файла устройства. Еще одна техника связана с осуществлением манипуляций с сетевым трафиком, передаваемым на машину и отправляемым с нее. Наконец, существует еще одна техника, связанная с управлением работой ядра ОС либо напрямую, либо посредством дополнительных загруженных модулей.

Базовый синтаксис команды выглядит следующим образом:

Вы можете указать имена пользователя и группы пользователей, от лица которых должна быть выполнена команда, с помощью параметра —userspec= : или перечислить дополнительные группы пользователей будущего процесса с помощью параметра —groups= , . .

Примеры использования

Запуск процесса с измененной корневой директорией

# chroot /home/alex /home/alex/myprogram

Запуск процесса с измененной корневой директорией от лица другого пользователя

# chroot —userspec=test:test /home/alex /home/alex/myprogram

Запуск процесса с измененной корневой директорией с дополнительными группами пользователей

# chroot —userspec=test:test —groups=dialout /home/alex /home/alex/myprogram

Советы по использованию поддержки chroot в системных службах

Для того, чтобы сократить шансы проникновения злоумышленников за пределы окружения chroot с помощью одной из выше описанных техник следует смонтировать файловую систему для окружения chroot с параметром «nodev». Создание небольшой узловой файловой системы или раздела для окружения chroot не представляет каких-либо сложностей.

Apache

Хотя веб-сервер Apache и может быть запущен посредством команды chroot таким же образом, как и любая системная служба, существует также специализированный модуль под названием «mod_chroot», который может использоваться для автоматического запуска Apache в окружении chroot после добавления дополнительной строки в файл конфигурации /etc/httpd.conf.

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

Некоторые серверы FTP автоматически активируют поддержку chroot после добавления символа точки «.» (соответствующего текущей директории) в путь к домашней директории соответствующего пользователя в файле /etc/passwd.

Источник

chroot (Русский)

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

Contents

Причины

Изменение корневого каталога обычно производится для выполнения действий по обслуживанию систем, загрузка и/или вход в которых стали невозможны. В таком режиме, например, могут быть выполнены:

Требования

  • Наличие привелегий суперпользователя.
  • Возможность загрузки с другой среды Linux, например, LiveCD, загрузочного USB-носителя или другого установленного дистрибутива.
  • Совпадение архитектур двух сред: с которой производится загрузка и в которую происходит изменение корня. Архитектуру текущей среды можно узнать командой # uname -m (например, i686 или x86_64).
  • Если среде chroot необходимы какие-нибудь модули ядра, они должны быть загружены.
  • Если нужен раздел подкачки, он должен быть включен: swapon /dev/sdxY .
  • Интернет-соединение установлено, если нужно.

Монтирование разделов

Корневой раздел среды Linux, в которую вы хотите войти с chroot, должен быть первым делом смонтирован. Чтобы найти имя раздела, выполните:

Затем создайте каталог для монтирования корневого раздела и смонтируйте его:

Если отдельные системные каталоги были вынесены на отдельные разделы, их также нужно смонтировать в файловую систему корневого раздела:

Изменение корневого раздела

Используя arch-chroot

Bash-скрипт arch-chroot является частью пакета arch-install-scripts из официальных репозиториев. Перед тем, как запускать /usr/bin/chroot , этот скрипт монтирует интерфейсные файловые системы вроде /proc и делает /etc/resolv.conf доступным из под окружения chroot.

Запустите arch-chroot с указанием нового корневого каталога:

Чтобы запустить командную оболочку bash вместо sh:

Чтобы запустить mkinitcpio -p linux в окружении chroot минуя создание сеанса в командной оболочке:

Используя chroot

Смонтируйте временные интерфейсные файловые системы:

Чтобы использовать интернет-соединение в chroot может понадобиться скопировать resolv.conf:

Чтобы запустить bash в окружении chroot:

После входа в сеанс chroot может понадобиться проинициализировать среду командной оболочки в новой среде:

Используя systemd-nspawn

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

Перейдите в точку монтирования нового корневого раздела и запустите systemd-nspawn:

Нет необходимости самостоятельно монтировать интерфейсные файловые системы вроде /proc , так как systemd-nspawn запускает новый процесс init в созданной виртуальной среде, который берет на себя эту задачу. Это похоже на загрузку второй операционной системы внутри основной, но без создания виртуальной машины.

Чтобы вернуться в основную систему, просто разлогиньтесь или запустите команду poweroff. После этого вы можете размонтировать разделы, как показано в #Выход из среды chroot.

Запуск графических приложений в среде chroot

Если у вас есть запущенный X-сервер, вы сможете запускать даже графические приложения в среде chroot.

Чтобы разрешить среде chroot соединение с сервером X, откройте виртуальный терминал внутри сервера (то есть, внутри рабочего стола пользователя, который в данный момент вошел в систему), запустите команду xhost, которая даст права каждому подключаться к X-серверу пользователя:

Теперь, для соединения приложений с сервером X, установите переменной окружения DISPLAY в сеансе chroot значение, совпадающее с переменной окружения DISPLAY пользователя, от имени которого запущен сервер. То есть, выполните

от имени этого пользователя для того, чтобы узнать значение переменной, и выполните

в среде chroot, установив переменной нужное значение (в данном примере это :0 ).

Выход из среды chroot

После завершения работы, выйдите из сеанса chroot:

Теперь размонтируйте временные файловые системы и корневой раздел:

Без прав суперпользователя

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

PRoot

PRoot может использоваться для изменения корневого раздела и использовать mount —bind без привелегий суперпользователя. Это полезно для ограничивания доступа приложений до единственного каталога или запуска программ, собранных для другой архитектуры. Однако PRoot имеет ограничения, связанные с тем, что все файлы принадлежат пользователю на основной системе. PRoot предоставляет опцию —root-id , которая может быть использована в качестве обходного пути для этих ограничений, по тому же принципу (хотя и более ограниченно), что и в fakeroot.

Fakechroot

fakechroot является небольшой прослойкой, которая перехватывает системные вызовы chroot и симулирует поведение системы, на самом деле не выполняя реальных вызовов (на которые все равно нет прав). Он может использоваться вместе с fakeroot для создания видимости того, что chroot запускается суперпользователем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как установить мод на майнкрафт на mac os x
  • Как установить кексты на mac os
  • Как установить игру windows на mac os
  • Как установить загрузчик mac os
  • Как установить две mac os