Rilascio del sistema di pacchetti autosufficienti Flatpak 1.14.0

È stato pubblicato un nuovo ramo stabile del toolkit Flatpak 1.14, che fornisce un sistema per creare pacchetti autonomi non legati a specifiche distribuzioni Linux ed eseguiti in un contenitore speciale che isola l'applicazione dal resto del sistema. Il supporto per l'esecuzione dei pacchetti Flatpak è fornito per Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux e Ubuntu. I pacchetti Flatpak sono inclusi nel repository Fedora e sono supportati dal gestore applicazioni nativo di GNOME.

Principali innovazioni nel ramo Flatpak 1.14:

  • È possibile creare una directory per i file in stato (.local/state) e impostare la variabile d'ambiente XDG_STATE_HOME che punta a questa directory.
  • Aggiunti controlli condizionali del modulo "have-kernel-module-name" per determinare la presenza di moduli del kernel (un analogo universale del controllo have-intel-gpu precedentemente proposto, invece del quale l'espressione "have-kernel-module-i915 " può ora essere utilizzato).
  • È stato implementato il comando “flatpak document-unexport —doc-id=…”.
  • Viene fornita l'esportazione dei metadati Appstream per l'utilizzo nell'ambiente principale.
  • Aggiunte regole di completamento dei comandi flatpak per Fish Shell
  • L'accesso di rete ai servizi X11 e PulseAudio è consentito (se vengono aggiunte le impostazioni appropriate).
  • Il ramo principale nel repository Git è stato rinominato da “master” a “main”, poiché la parola “master” è stata recentemente considerata politicamente scorretta.
  • Gli script di avvio ora vengono riscritti se l'applicazione viene rinominata.
  • Aggiunte le opzioni "--include-sdk" e "--include-debug" al comando di installazione per installare i file SDK e debuginfo.
  • Aggiunto supporto per il parametro "DeploySideloadCollectionID” ai file flatpakref e flatpakrepo. Se impostato, l'ID della raccolta verrà impostato quando si aggiunge un repository remoto e non dopo il caricamento dei metadati.
  • Consentita la creazione di ambienti sandbox nidificati per i gestori in sessioni con nomi MPRIS (Media Player Remote InterfacingSpecific) separati.
  • Le utilità della riga di comando ora forniscono informazioni sull'utilizzo di estensioni runtime obsolete.
  • Il comando di disinstallazione implementa una richiesta di conferma prima di rimuovere il runtime o le estensioni runtime ancora in uso.
  • Aggiunto il supporto per l'opzione “--socket=gpg-agent” a comandi come “flatpak run”.
  • È stata risolta una vulnerabilità in libostree che potrebbe potenzialmente consentire a un utente di eliminare file arbitrari sul sistema attraverso la manipolazione del gestore flatpak-system-helper (inviando una richiesta di eliminazione con un nome di ramo appositamente formattato). Il problema si presenta solo nelle versioni precedenti di Flatpak e libostree rilasciate prima del 2018 (< 0.10.2) e non influisce sulle versioni attuali.

Ricordiamo che Flatpak consente agli sviluppatori di applicazioni di semplificare la distribuzione dei loro programmi che non sono inclusi nei repository di distribuzione standard preparando un contenitore universale senza creare assiemi separati per ciascuna distribuzione. Per gli utenti attenti alla sicurezza, Flatpak consente di eseguire un'applicazione discutibile in un contenitore, fornendo accesso solo alle funzioni di rete e ai file utente associati all'applicazione. Per gli utenti interessati ai nuovi prodotti, Flatpak consente di installare le ultime versioni test e stabili delle applicazioni senza la necessità di apportare modifiche al sistema. Ad esempio, i pacchetti Flatpak sono creati per LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, ecc.

Per ridurre le dimensioni del pacchetto, include solo dipendenze specifiche dell'applicazione e il sistema di base e le librerie grafiche (librerie GTK, Qt, GNOME e KDE, ecc.) sono progettate come ambienti runtime standard plug-in. La differenza fondamentale tra Flatpak e Snap è che Snap utilizza i componenti dell'ambiente di sistema principale e l'isolamento basato sul filtraggio delle chiamate di sistema, mentre Flatpak crea un contenitore separato dal sistema e opera con ampi set di runtime, fornendo non pacchetti come dipendenze, ma standard propri ambienti di sistema (ad esempio, tutte le librerie necessarie per il funzionamento dei programmi GNOME o KDE).

Oltre all'ambiente di sistema standard (runtime), installato tramite apposito repository, vengono fornite ulteriori dipendenze (bundle) necessarie al funzionamento dell'applicazione. In totale, runtime e bundle formano il riempimento del contenitore, nonostante il runtime sia installato separatamente e legato a più contenitori contemporaneamente, il che consente di evitare la duplicazione dei file di sistema comuni ai contenitori. Un sistema può avere diversi runtime installati (GNOME, KDE) o diverse versioni dello stesso runtime (GNOME 3.40, GNOME 3.42). Un contenitore con un'applicazione come dipendenza utilizza un'associazione solo a un runtime specifico, senza tenere conto dei singoli pacchetti che compongono il runtime. Tutti gli elementi mancanti vengono impacchettati direttamente con l'applicazione. Quando viene formato un contenitore, i contenuti di runtime vengono montati come partizione /usr e il bundle viene montato nella directory /app.

Il runtime e i contenitori delle applicazioni sono costruiti utilizzando la tecnologia OSTree, in cui l'immagine viene aggiornata atomicamente da un repository simile a Git, che consente di applicare metodi di controllo della versione ai componenti di distribuzione (ad esempio, è possibile ripristinare rapidamente il sistema a una stato precedente). I pacchetti RPM vengono tradotti nel repository OSTree utilizzando uno speciale livello rpm-ostree. L'installazione e l'aggiornamento separati dei pacchetti all'interno dell'ambiente di lavoro non sono supportati; il sistema viene aggiornato non a livello dei singoli componenti, ma nel suo insieme, modificando atomicamente il suo stato. Fornisce strumenti per applicare gli aggiornamenti in modo incrementale, eliminando la necessità di sostituire completamente l'immagine con ogni aggiornamento.

L'ambiente isolato generato è completamente indipendente dalla distribuzione utilizzata e, con opportune impostazioni del pacchetto, non ha accesso a file e processi dell'utente o del sistema principale, non può accedere direttamente all'apparecchiatura, ad eccezione dell'output tramite DRI, e chiamate al sottosistema di rete. L'organizzazione dell'output grafico e dell'input è implementata utilizzando il protocollo Wayland o tramite il socket forwarding X11. L'interazione con l'ambiente esterno si basa sul sistema di messaggistica DBus e su una speciale API Portali.

Per l'isolamento vengono utilizzati il ​​livello Bubblewrap e le tradizionali tecnologie di virtualizzazione dei contenitori Linux, basate sull'utilizzo di cgroup, namespace, Seccomp e SELinux. PulseAudio viene utilizzato per emettere il suono. In questo caso, è possibile disabilitare l'isolamento, utilizzato dagli sviluppatori di molti pacchetti popolari per ottenere l'accesso completo al file system e a tutti i dispositivi nel sistema. Ad esempio, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity e VLC sono dotati di una modalità di isolamento limitato che lascia pieno accesso alla directory home. Se i pacchetti con accesso alla directory home vengono compromessi, nonostante la presenza dell'etichetta “sandboxed” nella descrizione del pacchetto, l'attaccante deve solo modificare il file ~/.bashrc per eseguire il suo codice. Una questione separata è il controllo delle modifiche ai pacchetti e la fiducia nei creatori di pacchetti, che spesso non sono associati al progetto o alle distribuzioni principali.

Fonte: opennet.ru

Aggiungi un commento