LINUX.ORG.RU
ФорумTalks

Идея для метадистра, суть такова

 


1

2

Давно в чертогах разума есть у меня идея принципиально нового дистра.

Зачем оно надо: для увеличения модульности системы так, чтобы стало проще и безопаснее, но при этом ничего не сломалось.

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

Чтобы запустить приложение, монтируем в отдельную директорию с помощью unionfs базовую систему, обновления к ней, собственно программу, аппдату из хомяка и куски реального пользовательского хомяка, которые пользователь хочет отдать в распоряжение программе (тут надо сделать красивые cli и gui, чтобы в рантайме можно было добавлять/удалять доступ к пользовательским директориям). И запускаем приложение в чруте.

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

/meta/
    home/
        user/
            Pron/
            Documents/
            Downloads/
            ...
            .appdata/
                firefox/
                    .mozilla/
                pidgin/
                    .purple/
    base/
        bin/
        usr/
        ...
    updates/
        2013-10-10/
            usr/
            ...
        2013-11-15/
            usr/
            ...
    apps/
        firefox/
            root/
                usr/
                    bin/firefox
                ...
            icon.png
            manifest
        pidgin/
            root/
                usr/bin/pidgin
                ...
            ...
    roots/
        0000/ # mounted with base, updates, home and running system ui
            usr/
            home/
            ...
        0001/ # mounted from base, updates, firefox root, /home/user/Downloads and /home/user/.private/firefox
            usr/
                bin/firefox
                ...
            home/user/
                Downloads/ (/meta/home/user/Downloads)
                .mozilla/ (/meta/home/user/.appdata/firefox/.mozilla)
            ...
        0002/ # mounted from base, updates, pidgin root and /home/user/.private/pidgin
            usr/bin/pidgin
            home/user/.purple
            ...

Плюсы:

  • Приложения не срут друг другу и пользователю, не тырят файлы и т. д.
  • Установка/удаление приложений или обновление/откат обновлений — простые операции с файловой системой
  • Этот велосипед можно будет прикрутить к любому традиционному дистрибутиву (от дебиана до арча)

Минусы:

  • Система становится более сложно устроена, большее несовпадение между логическим и физическим уровнями.
  • Может пострадать производительность
  • Система будет занимать больше места на диске (так как всё, что не входит в базовую систему, будет продублировано)
  • Труднее обновлять систему и приложения (решается написанием враппера, использующего пакетный менеджер низлежащего дистрибутива)

К велосипедостроению приступлю ориентировочно после закрытия сессии.

★★★★★

так как всё, что не входит в базовую систему, будет продублировано

Я правильно понимаю, что приложения будут линковаться с библиотеками статически, и соотв. тащить эти библиотеки с собой? Ну кроме libc. Тогда памяти жрать будет много.

Programmist11180 ★★★
()
Последнее исправление: Programmist11180 (всего исправлений: 1)

Чем обычные дистры не устраивают?

Satou ★★★★
()
Ответ на: комментарий от Programmist11180

Нет. Приложения будут линковаться динамически как обычно, но тащить либы с собой рядом, да.

В базовую систему будут включены не только libc, но и иксы, gtk, qt, и прочее, что будет часто встречаться в приложениях.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от evilbyte

В оффтопике остановились на полпути. Вроде у каждого приложения своя директория, а в итоге та же помойка безо всяких намёков на сендбоксинг.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от urandom

Приложение, запущенное из bundle легко может украсть пароль от вконтакта, биткойн кошелёк и напоследок выпилить хомяк, не?

PolarFox ★★★★★
() автор топика
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от unfo

Когда я в прошлый раз трахался с хакентошем, я не увидел там ничего подобного.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Вроде для ядра аж 2 было… В крайнем случае можно взять что-нибудь на fuse, тут правда встаёт вопрос производительности.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Ну а суть того, что здесь предлагается? Каждому приложению своя директория... с только своими 100 раз повторяющимися либами,пасьянсом и секретаршами?!

evilbyte
()
Ответ на: комментарий от evilbyte

Суть не в том, что каждому приложению своя директория, а в том, что каждому приложению свой чрут.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Вроде для ядра аж 2 было…

И хз какую выбрать (обе out-of-tree). Да и в любом случае, для изоляции лучше использовать MAC или LXC.

tailgunner ★★★★★
()

Не проще расставить права на файлы и запускать каждое приложение от своего пользователя? Тогда и структуру можно не менять. Правда, все это может легко поломаться.

KillTheCat ★★★★★
()
Ответ на: комментарий от evilbyte

Какую именно синхронизацию? Если нужен доступ к общим файлам/директориям из хомяка, они маунтятся в чрут.

Если хочется обновить приложения без сильного оверхеда, то можно сделать так (если дистр на основе дебиана): монтируем на rw новую update директорию для базовой системы, монтируем на rw кеш пакетов апта, делаем apt-get update & upgrade, потом по одному монтируем директорию каждого приложения и делаем upgrade в нём. Займёт больше по времени чем в обычном дебиане, но оверхеда при загрузке пакетов не будет.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от KillTheCat

Под работу в таком режиме рассчитан всего один дистрибутив, который, как всем тут известно, не линукс.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Да это понятно,что ручками,а автоматом приложения,например содержащие адресную книгу?Откуда они будут знать откуда синхронизироваться?Обращаться ко всему сообществу--пусть поддержат нестандартно системный дистр...Или предлагать например мне куче блондинок--выберете в меню: синхронизация-открыть из-выберете имя файла... оффтопик блин.Им тогда проще будет поставить себе офф.. какой нибудь пиратской 8.1 версии и пользоваться («легко и просто»)

evilbyte
()
Ответ на: комментарий от evilbyte

Мне хочется сделать велосипед в первую очередь для себя, а не для абстрактных идиотов в вакууме, которые не понимают как оно работает. Но если известно, что приложения используют определённый shared-ресурс в фс, то ничто не мешает в манифест прописать его как монтируемый по умолчанию. И вообще запоминать настройки монтирования между запусками.

Всё в конечном итоге происходит через чрут, приложения видят привычную для себя FHS-совместимую помойку.

PolarFox ★★★★★
() автор топика

Годная параноидальная идея. Пользуй zfs с дедупликацией.

riki ★★★★
()
Ответ на: комментарий от PolarFox

Извини,но с моей точки зрения не нужное усложнение,как дистра,так и fhs.Попробуй.Но пилить с вероятностью в 99% это чудо тебе самому(в единственном числе,да и пользоваться тоже).

Хомячково-вердикт:Не нужно =))

evilbyte
()

напоминает BotBrew на ведроиде из консоли

upcFrost ★★★★★
()
Ответ на: комментарий от evilbyte

Извини,но с моей точки зрения не нужное усложнение,как дистра,так и fhs

Не, абстрактно идея годная, но в качестве реализации - сказки тетушки Руби.

tailgunner ★★★★★
()

Вместо точкопомойки в хомяке каждому приложению заводится отдельная директория в ~/.appdata.

Ты — нуб. Уже есть две директории .config и .local. Если приложения умудряются мусорить куда-то ещё, это их проблемы.

Отдельная директория под приложение и запуск с ограниченными правами будет (и частично уже есть) в ubuntu click. Безо всяких unionfs, разграничение прав более тонкое благодаря AppArmor.

quiet_readonly ★★★★
()
Ответ на: комментарий от Programmist11180

Я правильно понимаю, что приложения будут линковаться с библиотеками статически, и соотв. тащить эти библиотеки с собой? Ну кроме libc. Тогда памяти жрать будет много.

Зависит от состава базовой системы со стабильным ABI. На практике большинство приложений опирается на узкий набор Qt+gtk+OpenGL/OpenAL/OpenVG/etc+ssl/botan/etc+libpng/libjpeg/libwebp/etc, а если что-то есть помимо этого, то оно всё равно тащится отдельно (как libcodeblocks среды codeblocks, XUL для firefox, или libbotan, включённая в состав дефолтного QtCreator).

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

Ты — нуб. Уже есть две директории .config и .local. Если приложения умудряются мусорить куда-то ещё, это их проблемы.

Дело не в том, что приложения куда-то срут, а в том, что они имеют доступ к высерам друг друга.

ubuntu click, AppArmor

Аппармор может, конечно, больше… Но оно какое-то неюниксвейное.

А убунтуклик — вендорспецифичный костыль, прикручиваемый сбоку (а не снизу, как предложенный мной) и который, как и всё что касается десктопа от каноникла, будет сделан через задницу и без любви.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Аппармор может, конечно, больше… Но оно какое-то неюниксвейное.

Бла-бла-бла. Твой способ не может ничего нужного, типа ограничения доступа к вебкамере, так что юниксвеем не оправдаешься.

А убунтуклик — вендорспецифичный костыль, прикручиваемый сбоку (а не снизу, как предложенный мной) и который, как и всё что касается десктопа от каноникла, будет сделан через задницу и без любви.

Вендорспецифичный костыль будет в любом случае сделан лучше, чем твой личный костыль. К тому же ubuntu click опенсорсный, ничто не мешает обеспечить поддержку в другом дистрибутиве и затем вместе с Canonical учредить комитет для определения состава базового набора библиотек без ущемления чьих-то интересов.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Вендорспецифичный костыль будет в любом случае сделан лучше

После юнити я сомневаюсь, что каноникл может в десктопы. А недавние постоянные разговоры Марка о convergence вообще вселяют опасения за будущее убунты.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Мне хочется сделать велосипед в первую очередь для себя, а не для абстрактных идиотов в вакууме, которые не понимают как оно работает.

Идиотов, говоришь? Разграничение доступа с возможностью дать частичный доступ уже есть в android, гугли java класс ContentProvider и открой для себя недоступную даже пользователю папку приложения в android.

Если ты не знал этого правильного решения и пошёл выдумывать своё с жуткими костылями и кучей ручной работы, то идиотом тебе стоит назвать себя, а не других.

P.S. В общем смотри на организацию android, у него всё перечисленное сделано куда лучше твоих костылей и отлично работает. В Ubuntu хотят перекатать часть их решений в виде Ubuntu Click (впрочем, mir тоже катается с android, а не с wayland, как некоторые думают).

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

В андроиде костыли оказались настолько жуткими, что он перестал считаться линуксом. Если убунта катится туда же, мне с ней не по пути.

Я не против использования apparmor, если возникнет необходимость, но у него первоочередная функция — разграничение, а не организация. Я хочу разграничение в первую очередь как следствие организации, а не через чёрные ящики вроде аппармора.

И да, не вижу ничего жуткого в обычном монтировании директорий, в plan9 таким образом организовано всё, от ide до оконного менеджера.

PolarFox ★★★★★
() автор топика
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от PolarFox

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

Не тебе судить. Сам факт существования треда говорит о том, что ты не в курсе архитектуры приложений в android — так зачем ты высказываешь своё мнение на этот счёт? Кроме того, убунта катится не туда же — напротив, они пытаются портировать хорошие решения из android на технологии традиционных дистрибутивов. APK перевели в click (работающий поверх dpkg и AppArmor), Mir перевели на libhybris и mesa.

Я не против использования apparmor, если возникнет необходимость, но у него первоочередная функция — разграничение, а не организация. Я хочу разграничение в первую очередь как следствие организации, а не через чёрные ящики вроде аппармора.

Вообще-то AppArmor — это как раз инструмент для реализации организованной системы. То, что он разграничивает, всего лишь означает, что AppArmor сам по себе не является готовым решением, но всё ещё может быть его компонентом.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)

Чем-то мне это NixOS напоминает. Мой небольшой опыт его использования закончился тем, что я в ужасе сбежал обратно в генту и решил больше с дистрибутивами не экспериментировать.

BlackHawk
()
Ответ на: комментарий от quiet_readonly

Я знаю как оно реализовано для андроида. Но я хочу по-другому, потому что мне не нравится как там сделано, и то что там сделано слабо совместимо с линуксовым мейнстримом.

но всё ещё может быть его компонентом

Не спорю.

Кстати, если не давать приложению рута и доступ к файлу /dev/video0, оно всё ещё сможет посмотреть в вебкамеру?

PolarFox ★★★★★
() автор топика
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от BlackHawk

У nixos похожий подход, но там полностью свои репозитории и формат пакетов, я же хотел основываться на чём-либо вроде дебиана.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Я знаю как оно реализовано для андроида. Но я хочу по-другому, потому что мне не нравится как там сделано и то что там сделано, слабо совместимо с линуксовым мейнстримом.

Только вот предложенный тобой способ реализует слишком малый и неюзабельный набор фич андроида. Как уже было сказано, в android приложение Контакты может расшарить свой список контактов всем желающим или всем обладателям нужного разрешения, а любое другое приложение может шарить свои файлы (например, чтобы запустить почтовый клиент и сразу добавить в готовящееся письмо прикреплённый файл).

В твоём варианте шарить данные между приложениями придётся вручную, что убого. Приложения затем и создаются, чтобы автоматизировать рутину.

Кстати, если не давать приложению рута и доступ к файлу /dev/video0, оно всё ещё сможет посмотреть в вебкамеру?

Скорее всего нет, так как даже API библиотек работает с /dev/video. Может быть, получится косвенно и с тормозами через какой-нибудь особо добрый демон какого-нибудь KDE.

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

В линуксе нет приложений, шарящих список контактов. По крайней мере я ими не пользуюсь. А возможность руками указать (через простую гуйню доступную в один клик или через скриптуемые консольные команды) какие файлы должны быть доступны приложению — хорошая возможность, которая придётся по душе может быть не только мне.

а любое другое приложение может шарить свои файлы (например, чтобы запустить почтовый клиент и сразу добавить в готовящееся письмо прикреплённый файл).

Ага, только вот доступ к sdcard никак не разграничить, либо всё, либо ничего.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от iamsoaw

В макоси для реализации этой идеи не хватает сендбоксинга¹ хотя бы на уровне ФС, поддержки железа и опенсорсности.

1 — вроде бы приложения, загружаемые через mac appstore сендбоксятся, но чую что механизм проприетарный, ни с чем не совместимый и недоступный для третьих лиц.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Sandboxes реализованы, на уровне ФС — зачем?
С железом отлично совместимо, в отличие от… вообще, самосборы считаю плохим вариантом для серьёзного применения, глюки на ровном месте.
Опенсорс — ну, как бы, опенсорс ради опенсорса не нужен.

iamsoaw
()
Ответ на: комментарий от iamsoaw

на уровне ФС — зачем?

Чтобы через дырку в файрфоксе не свиснули биткойновый кошелёк.

С железом отлично совместимо

Только если железо от apple, лол.

PolarFox ★★★★★
() автор топика
Ответ на: комментарий от PolarFox

Чтобы через дырку в файрфоксе не свиснули биткойновый кошелёк.

Это приложение само сендбоксинг не поддерживает потому что. Вот например какое-то решение, как пример решений для неподдерживающих сендбоксинг приложений. https://www.romab.com/ironfox/

Только если железо от apple, лол.

Вам шашечки, или ехать? ;)

iamsoaw
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.