Привет. Проба пера.
Я разработчик приложений для Android. Меня очень долго волновал вопрос, почему в андроид приложениях есть песочница у каждого приложения, куда другим приложениям нет доступа без root, а у Linux приложения такой песочницы нет. Я попытался своими силами исправить эту проблему. Оказалось что не всё так просто. Первый вариант, который, я создал, но сейчас уже не использую - это запуск приложения через sudo с указанием дополнительной группы пользователя и установка для папки доступа только из этой группы. Если будет интересно, я расскажу подробнее, но это не достаточно удобный вариант, потому что при каждом запуске через sudo необходимо ввести пароль. А вот что бы без пароля запускать приложения… Пришлось написать модуль ядра, который даёт доступ приложению исходя из его полного пути на диске. Сразу скажу, доступ довольно быстр, потому что программа loader сканирует фс и создаёт для всех путей идентификатор nodeId, который является целым числом, а не строкой и проверяется в модуле ядра. Так как это целое число, проверка на доступ занимает минимум времени. Но некоторая задержка для всех файлов всё же существует. Забегая вперёд, скажу, что создатели Linux могли бы внедрить кеширование и подобную технологию в само ядро Linux, и тогда бы накладных промедлений не было бы вообще. А пока что при компиляции долгого проекта из 5 минут с ssd на M.2, я практически не заметил промедлений, но они в общем то есть. Думаю это хороший результат при 5 программах в конфигурации по 2-3 папки на программу.
Прежде всего эта утилита для разработчиков приложений Linux и может быть для администраторов. Для того что бы ваше приложение получило папку-песочницу её достаточно добавить в конфиг и установить саму утилиту. Подробнее в ReadMe проекта: https://gitlab.com/v.kudashov.work/linux_app_data_sec/-/blob/main/README.ru.md
Я пришёл сюда с этой утилитой, что бы попросить у профи экспертизы относительно качества решения. Сам я им пользуюсь около 2 месяцев. И, возможно, хотелось бы заполучить сторонников этого решения, что бы что-то подобное внедрили в ядро.
Так же в проекте есть несколько практических конфигураций, которые, например, могут скрыть пользовательскую папку браузера от доступа из других приложений - в качестве улучшения защиты кеша браузера от доступа извне. Второй вариант практического применения - это защита образов virtualbox от доступа из других программ без sudo. Это что бы браузер или другая программа, например, не смогли сделать бинарный поиск в вашем не зашифрованном образе диска virtualbox. Это становится важным, прежде всего из за того, что программы бывают из разных стран и в условиях нестабильного мира неизвестно кто и что выкинет и куда полезет. Поэтому хотелось бы как в андроиде - никакая программа не может получить доступ к файлам другой программы без разрешения этой (другой) программы. Всем добра. Ссылка на утилиту: https://gitlab.com/v.kudashov.work/linux_app_data_sec/

