Nakon dve i po godine razvoja objavljena je nova stabilna verzija alatnog paketa Flatpak 1.16, koja pruža sistem za izradu samostalnih paketa, nezavisnih od konkretnog Linux distribucije, i izvršava se u posebnom kontejneru koji izoluje aplikaciju od ostatka sistema. Podrška za izvršavanje Flatpak paketa obezbeđena je za Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux i Ubuntu. Paketi sa Flatpak uključeni su u Fedora repozitorij i podržani su u standardnim programima za upravljanje aplikacijama GNOME i KDE.
Ključne novine u verziji Flatpak 1.16:
- Ostvaren je prelazak na korišćenje sistema za izradu Meson. Podrška za izradu putem alata Autotools je prekinuta. Za izradu Flatpak-a sada je potrebno imati Python, barem verziju 3.5, u sistemu.
- Omogućena je zajednička upotreba gssproxy soketa, što omogućava autentifikaciju putem Kerberos-a u aplikacijama koje se pokreću u režimu sandbox izolacije.
- Prilikom kreiranja soketa za Wayland korišćena je ekstenzija security-context, putem koje kompozitor strežnik može identifikovati i ograničiti aplikacije pokrenute u režimu sandbox izolacije. Dodata je opcija «—socket=inherit-wayland-socket» za nasledstvo postojećeg soketa za Wayland.
- Nakon instalacije ili ažuriranja aplikacija obezbeđena je automatska ponovna uspostava konfiguracije sesione D-Bus magistrale za preuzimanje novih D-Bus usluga koje aplikacije izlažu.
- Distributerima je pružena mogućnost određivanja repozitorija sa Flatpak paketima, koristeći katalog «/usr/share/flatpak/remotes.d», pored «/etc/flatpak/remotes.d».
- Obavljen je rad na podele velikih datoteka sa izvorom koda na manje module.
- Dodana je opcija «—device=input» za pristup uređajima za unos putem /dev/input.
- Za izolaciju aplikacija korišćena je nova verzija alata bubblewrap 0.11. U distributivima koji sastavljaju Flatpak koristeći sistemsku izvršnu datoteku bwrap, potrebno je imati barem verziju bubblewrap 0.11. Ojačana je zaštita od stvaranja u sandbox okruženjima ugnježdenih prostora identiteta korisnika (user namespace).
- Olakšana je konfiguracija dodatnih jezika. Obezbeđeno je određivanje jezika na osnovu informacija o korisnicima, koje pruža DBus servis AccountsService.
- Aplikacijam, ki uporabljajo vgrajeno sandbox izolacijo, na primer na osnovi motorja WebKit, je dovoljeno uporabo protokola AT-SPI za interakcijo z bralniki zaslona. Dodana je možnost „flatpak run —a11y-own-name“ za izbiro vodila, preko katerega se dostopa do sredstev za osebe s posebnimi potrebami.
- Ob izvajanju ukaza „flatpak run -vv “ je zagotovljen prikaz vseh veljavnih parametrov sandbox izolacije.
- Dodana je možnost „—device=usb“ ter parametri „—usb“ in „—no-usb“ za upravljanje dostopa aplikacije do USB naprav.
- Dodana je podpora za okvir KCompletion, ki se uporablja za samodejno dopolnjevanje iskalnih ključev v KDE.
- Dodane so okoljske spremenljivke „FLATPAK_DATA_DIR“ in „FLATPAK_DOWNLOAD_TMPDIR“ za prepisovanje katalogov z podatki (/usr/share/flatpak) in začasnimi datotekami za prenos (/var/tmp).
- Dodana je izhodna escape-sekvenca za prikaz napredka izvajanja operacij v terminalskih emulatorjih.
Spomnimo, da Flatpak poenostavi distribucijo programov, ki niso vključeni v privzete repozitorije distribucij, s pripravo enega univerzalnega kontejnerja, ki razvijalcem programov odpravlja potrebo po oblikovanju ločenih gradiv za vsako distribucijo. Uporabnikom, ki jih skrbi varnost, Flatpak omogoča izvajanje dvomljive aplikacije v kontejnerju, kar omogoča selektiven dostop samo do potrebnih mrežnih funkcij in datotek uporabnikov. Uporabnikom, ki jih zanimajo novosti, Flatpak omogoča namestitev najsodobnejših testnih in stabilnih različic aplikacij brez potrebe po spremembah v sistemu. Na primer, Flatpak paketi so na voljo za LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio itd.
Za zmanjšanje velikosti paketa vključuje le aplikaciji specifične odvisnosti. Osnovne sistemske in grafične knjižnice (GTK, Qt, knjižnice GNOME in KDE itd.) se dostavljajo v obliki priključnih tipičnih runtime okolij. Ključna razlika med Flatpak in Snap je v tem, da Snap uporablja komponente okolja glavnega sistema in izolacijo na podlagi filtriranja sistemskih klicev, medtem ko Flatpak ustvarja ločen kontejner od sistema in upravlja z velikimi sets runtime, ki kot odvisnosti ne zagotavljajo paketov, ampak tipična sistemska okolja (na primer vse knjižnice, potrebne za delovanje programov GNOME ali KDE).
Poleg tipičnega sistemskega okolja (runtime), ki se namesti preko posebne repozitorija, se dostavljajo dodatne odvisnosti (bundle), potrebne za delovanje aplikacije. Skupaj „runtime“ in „bundle“ tvorita vsebino kontejnerja, pri čemer se „runtime“ namesti ločeno in poveže takoj z več kontejnerji, kar omogoča izogibanje podvajanju skupnih sistemskih datotek za kontejnerje.
V enem sistemu je lahko nameščenih več različnih „runtime“ (GNOME, KDE) ali več različic enega „runtime“ (GNOME 46, GNOME 47). Kontejner z aplikacijo kot odvisnost uporablja povezavo le na določen „runtime“, ne upoštevajoč posameznih paketov, ki oblikujejo izbrani „runtime“. Vse manjkajoče elemente se pakirajo neposredno skupaj z aplikacijo. Pri ustvarjanju kontejnerja se vsebina „runtime“ pritrdi kot razdelek /usr, medtem ko se „bundle“ pritrdi v imenik /app.
Vsebina „runtime“ in kontejnerjev aplikacij se oblikuje z uporabo tehnologije OSTree, pri kateri se slika atomarno posodablja iz Git-podobnega skladišča, kar omogoča uporabo metod nadzora različic za komponente distribucije (na primer, sistem lahko hitro vrnete v prejšnje stanje). RPM paketi se prenesejo v repozitorij OSTree s pomočjo sloja rpm-ostree.
Izbirna namestitev in posodabljanje paketov znotraj delovnega okolja nista podprta — sistem se posodablja ne na ravni posameznih komponent, ampak celovito, atomarno spremenijo svoje stanje. Opravljajo se sredstva za inkrementalno uporabo posodobitev, ki osvobajajo potrebe po popolni zamenjavi slike pri vsaki posodobitvi.
Izolirano okolje se oblikuje tako, da je popolnoma neodvisno od uporabljene distribucije, in ob pravilno nastavljenem paketu nima dostopa do uporabnikovih datotek in procesov ali glavnega sistema ter se ne more neposredno povezati z opremo, razen preko izhoda z DRI. Izhodna grafika in organizacija vnosa sta izvedeni z uporabo protokola Wayland ali preko preusmeritve socketov X11. Interakcija z zunanjim okoljem je zasnovana preko sistema za izmenjavo sporočil DBus in posebnega API-Portalov.
Za izolacijo se uporablja plast Bubblewrap in tradicionalne linux tehnologije kontejnerske virtualizacije, ki temeljijo na uporabi cgroups, imenskih prostorov (namespaces), Seccomp in SELinux. Za izhod zvoka se uporablja PulseAudio ali PipeWire. Med ustvarjanjem paketa se lahko izolacija onemogoči, kar izkoriščajo razvijalci mnogih priljubljenih paketov za pridobitev popolnega dostopa do datotečnega sistema in vseh naprav v sistemu.
Na primer, paketi GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity in VLC prihajajo z omejenim režimom izolacije, ki pušča popoln dostop do domačega kataloga. V primeru kompromitacije paketov z dostopom do domačega kataloga, kljub temu, da je v opisu paketa oznaka 'sandboxed', napadalcu za izvajanje svojega kode zadostuje, da spremeni datoteko ~/ .bashrc. Poseben izziv je nadzor nad spremembami paketov in zaupanje v zbiralce paketov, ki so pogosto nepovezani z glavnimi projekti ali distribucijami.
Izvor: opennet.ru
