Rilascio del sistema di pacchetti autonomi Flatpak 1.16.0

Dopo due anni e mezzo di sviluppo, è stata pubblicata una nuova versione stabile del toolkit Flatpak 1.16, che fornisce un sistema per la creazione di pacchetti autonomi, indipendenti dalle distribuzioni Linux specifiche e eseguiti in un contenitore speciale che isola l'applicazione dal resto del sistema. Il supporto per l'esecuzione di pacchetti Flatpak è garantito per Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux e Ubuntu. I pacchetti Flatpak sono inclusi nel repository di Fedora e sono supportati nei programmi di gestione delle applicazioni standard di GNOME e KDE.

Novità principali nella versione Flatpak 1.16:

  • È stato effettuato il passaggio all'uso del sistema di build Meson. Il supporto per la build con gli strumenti Autotools è stato interrotto. Per compilare Flatpak, ora è necessario avere Python installato nel sistema, almeno nella versione 3.5.
  • È stato implementato l'accesso condiviso al socket gssproxy, che consente l'autenticazione Kerberos nelle applicazioni eseguite in modalità di isolamento sandbox.
  • Nella creazione del socket per Wayland è stata utilizzata l'estensione security-context, tramite la quale il compositore server può identificare e limitare le applicazioni eseguite in modalità di isolamento sandbox. È stata aggiunta l'opzione “—socket=inherit-wayland-socket” per ereditare un socket esistente per Wayland.
  • Dopo l'installazione o l'aggiornamento delle applicazioni, è stata garantita la riavvio automatico della configurazione del bus di sessione D-Bus per rilevare i nuovi servizi D-Bus esportati dalle applicazioni.
  • È stata fornita la possibilità alle distribuzioni di definire i repository con i pacchetti Flatpak, utilizzando la cartella "/usr/share/flatpak/remotes.d", oltre a "/etc/flatpak/remotes.d".
  • È stato svolto un lavoro per suddividere grandi file sorgente in piccoli moduli.
  • È stata aggiunta l'opzione “—device=input” per accedere ai dispositivi di input tramite /dev/input.
  • Per isolare le applicazioni è stata utilizzata una nuova versione del toolkit bubblewrap 0.11. Nelle distribuzioni che costruiscono Flatpak utilizzando il file eseguibile di sistema bwrap, è necessaria almeno la versione bubblewrap 0.11. È stata migliorata la protezione contro la creazione di spazi dei nomi utente (user namespace) nidificati negli ambienti sandbox.
  • È stata semplificata la configurazione di lingue aggiuntive. È stata garantita la definizione delle lingue basata sulle informazioni sugli utenti fornite dal servizio D-Bus AccountsService.
  • Alle applicazioni che utilizzano l'isolamento sandbox annidato, ad esempio, basate sul motore WebKit, possono utilizzare il protocollo AT-SPI per interagire con i lettori di schermo. È stata aggiunta l'opzione «flatpak run —a11y-own-name» per selezionare il bus attraverso il quale si accede agli strumenti per le persone con disabilità.
  • Eseguendo il comando «flatpak run -vv », viene mostrato tutti i parametri applicabili per l'isolamento sandbox.
  • È stata aggiunta l'opzione «—device=usb», oltre ai parametri «—usb» e «—no-usb» per gestire l'accesso delle applicazioni ai dispositivi USB.
  • È stato aggiunto il supporto per il framework KCompletion, utilizzato per il completamento automatico delle chiavi di ricerca in KDE.
  • Sono state aggiunte le variabili ambientali «FLATPAK_DATA_DIR» e «FLATPAK_DOWNLOAD_TMPDIR» per sovrascrivere le directory dei dati ( /usr/share/flatpak) e dei file temporanei scaricati ( /var/tmp).
  • È stata aggiunta l'uscita delle sequenze di escape per mostrare il progresso delle operazioni negli emulatori di terminale.

Ricordiamo che Flatpak semplifica la distribuzione di programmi non presenti nei repository standard delle distribuzioni, preparando un unico contenitore universale, liberando gli sviluppatori dalla necessità di creare singole build per ogni distribuzione. Agli utenti attenti alla sicurezza, Flatpak consente di eseguire applicazioni potenzialmente sospette in un contenitore, fornendo accesso selettivo solo alle funzioni di rete e ai file utente necessari. Agli utenti interessati alle novità, Flatpak consente di installare le versioni più recenti di applicazioni stabili e di prova senza la necessità di apportare modifiche al sistema. Ad esempio, i pacchetti Flatpak sono raccolti per LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, ecc.

Per ridurre le dimensioni, nel pacchetto vengono incluse solo le dipendenze specifiche per l'applicazione. Le librerie di base del sistema e grafiche (GTK, Qt, librerie GNOME e KDE, ecc.) vengono fornite sotto forma di ambienti runtime standardizzati. La principale differenza tra Flatpak e Snap è che Snap utilizza i componenti dell'ambiente del sistema principale e l'isolamento basato sulla filtrazione delle chiamate di sistema, mentre Flatpak crea un contenitore separato dal sistema e opera con ampi set di runtime, fornendo come dipendenze non pacchetti, ma ambienti di sistema standardizzati (ad esempio, tutte le librerie necessarie al funzionamento dei programmi GNOME o KDE).

Oltre all'ambiente di sistema standard (runtime), installato tramite un apposito repository, vengono fornite dipendenze aggiuntive (bundle) richieste per il funzionamento dell'applicazione. Insieme, il «runtime» e il «bundle» costituiscono il contenuto del contenitore, con il «runtime» che viene installato separatamente e associato a più contenitori, consentendo di evitare la duplicazione di file di sistema condivisi tra i contenitori.

In un sistema possono essere installati diversi «runtime» (GNOME, KDE) o diverse versioni di uno stesso «runtime» (GNOME 46, GNOME 47). Il contenitore con l'applicazione come dipendenza utilizza il vincolo esclusivamente su un determinato «runtime», senza considerare i singoli pacchetti che formano il «runtime» selezionato. Tutti gli elementi mancanti vengono raggruppati direttamente insieme all'applicazione. Quando viene creato un contenitore, il contenuto del «runtime» è montato come partizione /usr, mentre il «bundle» è montato nella directory /app.

Il contenuto del «runtime» e dei contenitori delle applicazioni viene creato utilizzando la tecnologia OSTree, che consente l'aggiornamento atomico dell'immagine da un repository simile a Git, permettendo di applicare metodi di controllo di versione ai componenti della distribuzione (ad esempio, è possibile ripristinare rapidamente il sistema a uno stato precedente). I pacchetti RPM vengono tradotti nel repository OSTree tramite un'interfaccia di rpm-ostree.

L'installazione selettiva e l'aggiornamento dei pacchetti all'interno dell'ambiente di lavoro non sono supportati: il sistema viene aggiornato non a livello di singoli componenti, ma interamente, modificando in modo atomico il proprio stato. Viene fornito uno strumento per l'applicazione incrementale degli aggiornamenti, evitando la necessità di sostituire completamente l'immagine ad ogni aggiornamento.

L'ambiente isolato creato è completamente indipendente dalla distribuzione utilizzata e, con le giuste configurazioni del pacchetto, non ha accesso ai file e ai processi dell'utente o del sistema principale, né può accedere direttamente all'hardware, ad eccezione dell'output tramite DRI. L'output grafico e l'organizzazione dell'input sono realizzati tramite il protocollo Wayland o tramite il forwarding del socket X11. L'interazione con l'ambiente esterno è costruita attraverso il sistema di messaggistica DBus e un'API speciale chiamata Portals.

Per l'isolamento viene utilizzato un'interfaccia di Bubblewrap e tecnologie tradizionali di virtualizzazione dei container per Linux, basate sull'uso di cgroups, spazi dei nomi (namespaces), Seccomp e SELinux. Per l'output audio si utilizza PulseAudio o PipeWire. Durante la creazione del pacchetto, l'isolamento può essere disabilitato, il che viene sfruttato oltre che dai programmatori di molti pacchetti popolari per ottenere accesso completo al file system e a tutti i dispositivi del sistema.

Ad esempio, i pacchetti GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity e VLC sono forniti con una modalità di isolamento limitata che consente l'accesso completo alla propria home. In caso di compromissione dei pacchetti con accesso alla home, nonostante la presenza dell'etichetta "sandboxed" nella descrizione del pacchetto, per l'attaccante è sufficiente modificare il file ~/ .bashrc per eseguire il proprio codice. La questione del controllo sulle modifiche ai pacchetti e la fiducia nei manutentori di pacchetti, che spesso non sono collegati al progetto principale o alle distribuzioni, è un argomento a parte.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster