Entendendo as informações que você vê no terminal ao instalar um pacote flatpak

O Flatpak surgiu como uma resposta à fragmentação histórica da instalação de pacotes no Linux, onde desenvolvedores enfrentam o desafio de empacotar seus softwares para dezenas de distribuições diferentes, cada qual com suas versões de bibliotecas e gerenciadores de pacotes.

Criado por volta de 2015 por Alexander Larsson, o projeto nasceu com a missão de ser um formato universal para aplicativos no Linux, permitindo que um único pacote seja usado de forma idêntica e confiável em sistemas tão diversos quanto Fedora, Ubuntu, Arch Linux, openSUSE e Debian.

No coração de seu funcionamento está o OSTree, que gerencia atualizações, downloads e armazenamento de forma incremental, permitindo reversões de versão rápidas e economia de espaço. A arquitetura do Flatpak divide-se entre os aplicativos propriamente ditos e as runtimes ou ambientes de execução.

Quando um aplicativo é instalado, o Flatpak monta seu sistema de arquivos de maneira isolada utilizando recursos nativos do kernel Linux, como namespaces, cgroups e overlays, garantindo que o software enxergue um ambiente consistente e imutável.

image
Alexander Larsson

A segurança é o pilar fundamental da sua arquitetura, diferenciando-se do rpm ou deb que tem amplos privilégios e acesso irrestrito ao sistema de arquivos do usuário. Por padrão, todos os aplicativos Flatpak rodam dentro de um ambiente de sandbox (areia) rigoroso, impulsionado pelo utilitário Bubblewrap.

Isso significa que, inicialmente, um aplicativo isolado não consegue acessar os arquivos pessoais do usuário, conectar-se à rede sem autorização, ler dispositivos de hardware ou gravar em diretórios fora de sua própria estrutura.

Para permitir que esses aplicativos interajam de maneira útil com o sistema operacional sem comprometer a segurança, o Flatpak utiliza os chamados XDG Desktop Portals, uma camada baseada em D-Bus que atua como um intermediário seguro, solicitando consentimento para ações específicas, como abrir uma janela.

Tudo muito bem, tudo muito bom…

Mas, com todas essa qualidades, você sabe analisar as informações que aparecem no terminal ao instalar um aplicativo Flatpak? Não? Pois é bom saber o que você autoriza, mesmo em sandbox, pois não existe o sistema operacional perfeito. E todo cuidado é pouco por parte do usuário.

O objetivo deste trabalho é mostrar o que aparece e o que significa. E se você achar que precisa fazer alguma alteração, basta usar o Flatseal para as devidas correções. Vamos lá, então. Como exemplo, instalei o google chrome no meu Solus OS, como mostro a seguir:

À primeira vista, a imagem assusta, mas é tudo fácil de entender. Para isso, dividi-la-emos em partes:

Entre o óbvio ululante e as novidades, destrinchemos cada parte:

1 - comando para instalar o aplicativo desejado
2 - o Flatpak procura o aplicativo no repositório
3 - tem dois aplicativos com o nome “chrome”
4 - você faz a opção de qual quer instalar
5 - permissões que o aplicativo tem no seu Linux
6 - identificação do aplicativo instalado

Entendendo as permissões

Eu já expliquei que o Flatpak roda os aplicativos em uma sandbox, um ambiente isolado do resto do sistema operacional, por motivos de segurança. Mas eles precisam interagir com várias partes do seu computador para funcionar bem. Aqui estão listadas as permissões gerais concedidas ao Chrome, nosso exemplo:

network - acesso à internet.
pulseaudio - acesso ao sistema de som para reproduzir áudio de vídeos esites
wayland / x11 - acesso ao servidor gráfico para exibir a janela na tela
cups - acesso para detecção e uso de impressoras
devices - acesso a dispositivos de hardware, como webcam ou microfone.

E aqui estão os detalhes das permissões, as notas de rodapé:

[1] - acesso a arquivos e pastas - o chrome precisa ler/gravar nas suas pastas de usuário padrão para você conseguir baixar arquivos (xdg-download), abrir imagens, documentos, além de ler configurações de tema (dconf).

[2] - acesso ao D-Bus - permite que o navegador se comunique com o ambiente gráfico para enviar notificações, abrir o gerenciador de arquivos padrão ao fazer upload/download, e salvar senhas de forma segura no chaveiro do sistema (org.freedesktop.secrets).

[3] - controle de Mídia (MPRIS) - permite que teclas de mídia do teclado (Play/Pause) controlem o que está tocando no navegador.

[4] - D-Bus do Sistema - acesso a serviços como Bluetooth (org.bluez) e gerenciamento de energia (org.freedesktop.UPower).

[5] - Tags (proprietary) - indica que o pacote contém software proprietário, já que o Google Chrome não é de código aberto

Em “Download e Conclusão” o Flatpak mostra que baixou os arquivos necessários - cerca de 154 MB - a partir do repositório flathub, com o identificador único (ID) com.google.Chrome, no ramo stable. A letra i significa installd, de “instalado”, ou seja, o processo foi concluído com sucesso.

Alterando permissões com o Flatseal

O Flatseal é uma ferramenta extremamente poderosa e flexível para gerenciar as permissões de aplicativos instalados via Flatpak, com limites técnicos e operacionais impostos por sua arquitetura de segurança e também do sistema operacional.

Funciona como uma interface gráfica amigável para manipular as regras do Bubblewrap, o mecanismo de sandbox, permitindo que você altere permissões como o sistema de arquivos, concedendo ou revogando acesso a pastas específicas, a rede local, internet, webcam, microfone etc.

Por outro lado, ele não pode ultrapassar os limites lógicos do isolamento e se um programa requer uma dependência do sistema que não traz em sua runtime, alterá-la pode fazer com que o programa pare de funcionar ou feche sozinho, sem criar recursos do zero onde o aplicativo não tem suporte.

Ele não pode garantir cem por cento de segurança contra malwares avançados, se você der permissão total de acesso à sua pasta pessoal ou liberar o acesso irrestrito ao sistema de arquivos; o aplicativo poderá ler e modificar seus arquivos pessoais, anulando as vantagens do sandbox.

O Flatseal não pode modificar pacotes tradicionais como APT, DNF ou Pacman, já que é exclusivo para aplicativos instalados no formato Flatpak e não tem qualquer efeito sobre programas instalados nativamente na sua distribuição Linux via gerenciadores de pacotes tradicionais.

O Flatseal apenas gerencia o nível de confiança que você deposita em um software

O Flatseal nunca funcionou para mim.

Já tentei adicionar permissões, mas sem sucesso.