Conhecendo (um pouco mais) os snaps

O Snap é um sistema de empacotamento de software desenvolvido pela Canonical , uma empresa por trás do Ubuntu.

Surgiu inicialmente como parte do projeto Ubuntu Phone , com o objetivo de criar um método de distribuição de aplicativos que fosse independente das diversas distribuições Linux.

O ubuntu phone

Desenvolvido pela Canonical, foi um sistema operacional que tinha o objetivo de concorrer com Android e iOS. A primeira versão estável foi lançada em 2014, acompanhada pelo smartphone BQ Aquaris E4.5 Ubuntu Edition.

image

No entanto, a falta de adesão do público e de suporte por fabricantes levou a Canonical a descontinuar o projeto, transferindo a responsabilidade para a comunidade UBports.

Voltando ao snap

A ideia era evitar a fragmentação de pacotes Linux, permitindo que um único pacote pudesse ser utilizado em diferentes sistemas operacionais baseados em Linux.

A principal motivação para a criação do Snap foi a necessidade de um sistema que simplificasse a instalação e atualização de aplicativos em várias distribuições Linux.

Antes do Snap, os usuários enfrentavam problemas de dependência e compatibilidade entre diferentes versões de uma mesma distro, o que muitas vezes resultava em falhas na instalação de software. O Snap resolve isso empacotando o aplicativo com todas as dependências, tornando-o mais independente e fácil de instalar.

Os pacotes Snap são projetados para serem auto-contidos e funcionarem em uma ampla gama de distribuições, permitindo que os desenvolvedores criem um pacote único que funcione em qualquer pinguim sem a necessidade de adaptações específicas.

Isso é útil quando se necessita de compatibilidade entre diferentes versões de aplicativos e também de distribuições.

E as sandbox?

Os snaps operam em um ambiente de sandboxing , técnica que isola aplicações e limita seu acesso ao sistema operacional subjacente, oferecendo diversas vantagens em termos de segurança e gerenciamento de software.

São executados em um espaço restrito, impedindo o acesso aos recursos do sistema fora do próprio snap, a menos que as permissões específicas sejam concedidas. Isso ajuda a evitar que um aplicativo malicioso comprometa o sistema operacional ou outros aplicativos.

Cada snap é adicionado aos perfis de segurança gerados pelo AppArmor e Seccomp, que definem o que o aplicativo pode acessar, garantindo que operem dentro de um ambiente “controlado” que aumenta a segurança geral.

O ambiente de execução dos snaps possui configurações específicas e montagens próprias, como um diretório exclusivo para cada snap. Isso significa que seus dados e processos não interferem nos outros, mantendo a integridade do /tmp.

Embora os snaps sejam isolados, podem solicitar acesso a recursos do sistema por meio de interfaces específicas. Essas interfaces permitem que os snaps interajam com partes do sistema, como rede ou dispositivos, mas sempre sob controle rigoroso.

O sistema busca regularmente por atualizações e as instalações automáticas ocorrem de forma “atômica”, garantindo que as versões mais recentes estejam sempre em uso sem comprometer a estabilidade do snapd.

O snapd, esse misterioso…

O snapd é o daemon responsável pela gestão e manutenção dos pacotes de software chamados snaps em sistemas Linux. Desenvolvido pela Canonical, ele permite que os usuários instalem, atualizem e removam snaps de forma eficiente e segura.

É o verdadeiro responsável por instalar, configurar, atualizar e remover snaps, garantindo que as transações realizem-se de maneira segura e eficiente, facilitando a experiência do usuário.

Os usuários interagem com o snapd através da linha de comando usando comandos que simplificam o gerenciamento dos pacotes, como: snap install, snap remove e snap refresh.

Para que funcione, depende do systemd instalado para gerenciar serviços e soquetes. Embora a maioria das distribuições modernas suporte systemd, algumas distribuições mais antigas ou específicas podem não ser compatíveis.

Snaps x Flatpak

O Flatpak tem ganhado popularidade em relação ao Snap por várias razões, refletindo preferências de usuários e desenvolvedores. É projetado principalmente para aplicativos de desktop, enquanto o Snap abrange uma gama mais ampla, incluindo IoT e servidores.

Permite que os aplicativos usem bibliotecas compartilhadas entre diferentes pacotes, o que pode resultar em menos duplicação e economia de espaço em disco. Em contraste, os Snaps incluem todas as dependências dentro do pacote, o que pode aumentar o tamanho total dos aplicativos instalados.

Também utiliza um sistema de sandboxing que oferece maior controle sobre as permissões dos aplicativos e permite ajuste manual das permissões por meio do Flatseal, aumentando a segurança e a privacidade.

image

Não requer a execução de um daemon em segundo plano, resultando em uma sobrecarga de tempo de execução menor em comparação com o Snapd, para gerenciar pacotes.

Embora o Snap tenha um repositório mais robusto, com mais desenvolvedores contribuindo, o Flathub (repositório para Flatpak) está crescendo rápido e é considerado mais amigável para desenvolvedores independentes.

Mas nem tudo são flores

Ao usar snaps, os usuários transferem parte da responsabilidade pela segurança para os desenvolvedores dos pacotes. Se um snap for malicioso ou mal protegido, isso pode representar um risco significativo ao sistema. A falta de verificação rigorosa por parte da distribuição Linux pode aumentar essa vulnerabilidade.

Embora os snaps operem em sandboxing, já explicamos que podem solicitar permissões para acessar recursos do sistema, como rede ou armazenamento. Se um usuário concede essas permissões sem entender as implicações, pode resultar em exposição excessiva a riscos.

Recentemente, a Canonical descobriu snaps que poderiam conter código malicioso na Snap Store, levantando preocupações sobre a segurança dos aplicativos disponíveis. A resposta incluiu a remoção desses snaps e a implementação de verificações adicionais para novos uploads, mas isso destaca a vulnerabilidade potencial da plataforma.

Muitos usuários relataram que snaps demoraram significativamente mais para abrir em comparação com versões tradicionais, especialmente nos sistemas opéracionais instalados em HD’s, onde a lentidão se torna um problema mais notável.

Embora autocontidos, cada snap incluindo suas próprias dependências, pode resultar em um uso maior de espaço em disco, o que pode ser um problema para usuários com armazenamento limitado.

Alguns usuários relataram que a interface da Snap Store e a experiência geral de gerenciamento de snaps podem ser menos intuitivas em comparação com repositórios tradicionais, o que pode dificultar a navegação e a instalação de aplicativos.

E a popularidade?

Os snaps ganharam popularidade entre os usuários de Linux, mas sua adoção em massa ainda enfrenta desafios. Embora venha instalado por padrão no Ubuntu - desde a versão 18.04 - outras hesitaram em adotá-los por preocupações sobre controle e integração com o sistema.

A instalação do snapd pode exigir passos adicionais em algumas distros, o que pode desencorajar usuários menos experientes.

Os incidentes envolvendo snaps maliciosos na Snap Store - já citados aqui - levantaram questões sobre segurança dos mesmos.

Fontes: links no texto e na imagem.

1 curtida

Essa “briga” snap x flatpack me lembra a disputa pelos formatos de fita VHS x Betamax :slightly_smiling_face:

2 curtidas

O problema dos flatpaks é q não são universais o suficiente em varios casos.

Vscode via flatpak demanda muita configuração via comandline ou flatseal, nem um software de cli funciona em flatpak, e duvido muito q algum dia teremos um DE empacotado em flatpak, diferente do Snap, que tudo isso funciona.

Sei q as pessoas majoritariamente não querem usar snap pq a snap store é código fechado, mas não me importo tanto pessoalmente, minha lista de prioridade sempre vai ser

  1. nativo
  2. flatpak
  3. snap
  4. distrobox(com arch e aur)

hoje em dia eu nem penso em instalar appimage ou tar com binario

3 curtidas