Ruri или повесть о том, как добиться максимальной изоляции без Docker
Доброго времени суток, Хабровчане.
Спойлер: Эта статья написана для тех, кто не хочет заморачиваться с докером, "chroot" или у кого нет возможностей пересобрать ядро, т.е. в первую очередь для android-юзеров с root правами
ruri или же ⟨Легкая и удобная реализация Linux-контейнеров⟩
Маленький проект, имеющий огромный потенциал, есть сразу статические собранные бинарникики, а теперь к лёгкому методу использования
Выбираем удобный для вас терминал (от adb shell до termux)
Скачиваем бинарник с гитхаба
./ruri /<path>/<to>/<your>/<container>
Поздравляю, вы в своем контейнере
А теперь от теории к практике, в моем случае будет использоваться termux с чистыми переменными от root юзера
Берем любимый терминал и от суперпользователя переходим в любимую директорию, в моем случае /data/local
Скачиваем необходимый статичный бинарник релиза с гитхаба
Релизы лежат *здесь*
И соответственно запускаем для "гарантии"
Казалось бы, что может быть интересного, простая программа, ничего не умеет на первый взгляд, да и выглядит как обычный скрипт, так сказать алиас чрута, но не все так просто, самое главное, что она умеет это «играть в ограничения» , и ограничения она ставит все максимально, от самых банальных маскировок dev, sys, proc, так и отсекает системные вызовы, к примеру можно самое банальное что показать, это доступ к папкам для каким-либо изменениям:)
Впрочем, не маскировкой едины, но некоторые сервисы (единичные случаи) могут и поругаться на это все, не понимая что происходит с /dev
Кончено сейчас я буду полным нубом, но можно посмотреть на Current IAB и увидеть, что тут стоит очень много ограничений, что конечно для кого-то будет сложно, нельзя будет полазить в системе через /proc/1/cwd , но для этого это и контейнер :D
Должен отметить сразу, конфигурация лежит в корне каждого контейнера /.rurienv и она защищена от записи, её не рекомендуется редактировать, но никто не запрещает снять с ней бит защиты от записи и отредактировать, добавив или убрав ограничения
Данная маленькая утилита, размером от 500кб до 1мб может помочь в ограниченных ресурсами местах, ну или можно расковырять её исходники, ну или просто посмотреть её мануал, что может открыть множество преимуществ как и над обычным chroot, так и над lxc/docker