Как стать автором
Обновить

Ruri или повесть о том, как добиться максимальной изоляции без Docker

Уровень сложностиПростой

Доброго времени суток, Хабровчане.

Спойлер: Эта статья написана для тех, кто не хочет заморачиваться с докером, "chroot" или у кого нет возможностей пересобрать ядро, т.е. в первую очередь для android-юзеров с root правами

ruri или же ⟨Легкая и удобная реализация Linux-контейнеров⟩

Маленький проект, имеющий огромный потенциал, есть сразу статические собранные бинарникики, а теперь к лёгкому методу использования

  1. Выбираем удобный для вас терминал (от adb shell до termux)

  2. Скачиваем бинарник с гитхаба

  3. ./ruri /<path>/<to>/<your>/<container>

  4. Поздравляю, вы в своем контейнере

А теперь от теории к практике, в моем случае будет использоваться termux с чистыми переменными от root юзера

Берем любимый терминал и от суперпользователя переходим в любимую директорию, в моем случае /data/local

Простенько и уютненько
Простенько и уютненько

Скачиваем необходимый статичный бинарник релиза с гитхаба

Использовался wget через busybox
Использовался wget через busybox

Релизы лежат *здесь*

И соответственно запускаем для "гарантии"

Великая справка
Великая справка
И великая справка для ленивых
И великая справка для ленивых

Казалось бы, что может быть интересного, простая программа, ничего не умеет на первый взгляд, да и выглядит как обычный скрипт, так сказать алиас чрута, но не все так просто, самое главное, что она умеет это «играть в ограничения» , и ограничения она ставит все максимально, от самых банальных маскировок dev, sys, proc, так и отсекает системные вызовы, к примеру можно самое банальное что показать, это доступ к папкам для каким-либо изменениям:)

Великий запрет всему и вся, изменить разделы просто так не получится!
Великий запрет всему и вся, изменить разделы просто так не получится!

Впрочем, не маскировкой едины, но некоторые сервисы (единичные случаи) могут и поругаться на это все, не понимая что происходит с /dev

Выхлоп
Выхлоп

Кончено сейчас я буду полным нубом, но можно посмотреть на Current IAB и увидеть, что тут стоит очень много ограничений, что конечно для кого-то будет сложно, нельзя будет полазить в системе через /proc/1/cwd , но для этого это и контейнер :D

Должен отметить сразу, конфигурация лежит в корне каждого контейнера /.rurienv и она защищена от записи, её не рекомендуется редактировать, но никто не запрещает снять с ней бит защиты от записи и отредактировать, добавив или убрав ограничения

Конфиг файл
Конфиг файл

Данная маленькая утилита, размером от 500кб до 1мб может помочь в ограниченных ресурсами местах, ну или можно расковырять её исходники, ну или просто посмотреть её мануал, что может открыть множество преимуществ как и над обычным chroot, так и над lxc/docker

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.