Solicitação de permissão
Ubuntu 26.04 apresenta um novo sistema de solicitação de permissão que exibe uma janela de prompt solicitando autorização do usuário quando um aplicativo tenta acessar recursos confidenciais. Esse mecanismo melhora significativamente a segurança da área de trabalho, dando aos usuários um controle refinado sobre as permissões de cada aplicativo.
Como funciona
Conceitos Básicos
O sistema de solicitação de permissão é construído na interface de solicitação do AppArmor 4.0. Quando um aplicativo confinado (principalmente aplicativos Snap) tenta uma operação que requer permissões específicas, o sistema intercepta a solicitação e exibe uma caixa de diálogo para o usuário decidir se deseja autorizá-lo.
O fluxo de trabalho é o seguinte:
- Um aplicativo tenta acessar um recurso protegido (como arquivos, câmera, rede, etc.)
- AppArmor intercepta a solicitação de acesso
- O sistema exibe uma caixa de diálogo de solicitação de permissão
- O usuário escolhe “Permitir” ou “Negar”
- O usuário pode escolher “Só desta vez” ou “Sempre permitir/negar”
- O sistema lembra a escolha do usuário e aplica-a a solicitações futuras
Tipos de recursos protegidos
| Tipo de recurso | Descrição | Exemplo |
|---|---|---|
| Sistema de arquivos | Acessar arquivos do usuário | Lendo arquivos em ~/Documents |
| Câmera | Use dispositivos de câmera | Aplicativos de videochamada |
| Microfone | Use dispositivos de gravação | Aplicativos de gravação de voz |
| Localização | Obter localização geográfica | Aplicativos de mapas |
| Rede | Acesso à rede | Acesso a portas ou endereços específicos |
| Notificações | Envie notificações na área de trabalho | Aplicativos de mensagens |
| Início automático | Execute na inicialização | Serviços em segundo plano |
Interface de prompt de permissão
Quando um prompt de permissão é acionado, uma caixa de diálogo no nível do sistema aparece contendo as seguintes informações:
- Nome e ícone do aplicativo solicitante
- Tipo de permissão solicitada
- Caminho de recurso específico (como um caminho de arquivo)
- Opções de ação:
- Permitir uma vez
- Sempre permitir
- Negar uma vez
- Sempre negue
Opções Avançadas
Para permissões do sistema de arquivos, os usuários podem escolher ainda:
- Permitir acesso a um arquivo específico
- Permitir acesso a um diretório inteiro
- Permitir acesso somente leitura
- Permitir acesso de leitura e gravação
Gerenciando permissões
Via Security Center
Abra a seção “Permissões do aplicativo” de Security Center para:
- Ver todas as permissões concedidas
- Modificar ou revogar permissões
- Navegue por aplicativo ou por tipo de permissão
Via linha de comando
# View snap app connections (permissions)
snap connections firefox
# View all snap connections
snap connections --all
# Manually grant a connection
sudo snap connect firefox:camera
# Disconnect (revoke permission)
sudo snap disconnect firefox:camera
# View available interfaces
snap interface cameraVisualizando regras de permissão
As regras de solicitação de permissão são gerenciadas por snapd (não por arquivos escritos à mão). Você pode visualizá-los e gerenciá-los por meio do gráfico “Security Center” ou consultá-los por meio da API de prompt do snapd.
# Query the current prompting rules via the snapd REST API
sudo snap interface snap-interfaces-requests-control
# Call the Prompting API over the local socket to list rules
sudo curl -s --unix-socket /run/snapd.socket \
http://localhost/v2/interfaces/requests/rulesRedefinindo permissões
# Recommended: clear an app's permission decisions via the Security Center GUI
# Or call the Prompting API to delete a rule (requires the rule ID)
# Reset a specific snap interface connection
sudo snap disconnect firefox:homeInterfaces Snap explicadas
O sistema de solicitação de permissão opera principalmente em torno de interfaces Snap. As interfaces comuns incluem:
Interfaces de acesso a arquivos
# home - access user home directory
snap connections firefox | grep home
# removable-media - access removable storage
sudo snap connect myapp:removable-media
# personal-files - access specific personal files
# system-files - access specific system filesInterfaces de hardware
# camera - camera
snap interface camera
# audio-record - microphone
snap interface audio-record
# bluetooth-control - Bluetooth
snap interface bluetooth-control
# joystick - game controller
snap interface joystickInterfaces de rede
# network - network access
# network-bind - listen on ports
# network-observe - network monitoring
# firewall-control - firewall control
snap connections --all | grep networkConfigurando o comportamento do prompt de permissão
Configurações globais
# Permission prompting is still experimental in 26.04; enable/disable it via the snapd experimental option
sudo snap set system experimental.apparmor-prompting=true
# Check whether it is currently enabled
snap get system experimental.apparmor-prompting
# You can also toggle it in the graphical Security CenterConfiguração por aplicativo
# View an app's snap declaration
snap info firefox
# View all interfaces requested by an app
snap connections firefox
# Example output:
# Interface Plug Slot Notes
# camera firefox:camera :camera -
# home firefox:home :home -
# network firefox:network :network -
# audio-playback firefox:audio-playback :audio-playback -Regras de autorização persistente
As regras de solicitação de permissão são gerenciadas uniformemente por snapd e não são configuradas por meio de arquivos escritos à mão. Quando você escolhe “Sempre permitir” em uma caixa de diálogo de prompt, snapd cria automaticamente uma regra persistente.
Para gerenciar regras programaticamente, use a API de solicitação de snapd (/v2/interfaces/requests/rules), iniciada por um cliente que contém a interface snap-interfaces-requests-control; consultar, criar e excluir regras são todas tratadas por snapd, em vez de editar diretamente os arquivos JSON no disco.
# List the current persistent rules
sudo curl -s --unix-socket /run/snapd.socket \
http://localhost/v2/interfaces/requests/rulesImpacto em aplicativos deb tradicionais
O sistema de solicitação de permissão visa principalmente aplicativos Snap. Os aplicativos tradicionais instalados via APT ainda usam o modelo de permissão convencional do Linux:
- aplicativos deb têm todas as permissões de nível de usuário por padrão
- AppArmor pode ser configurado manualmente para restringir aplicativos deb
- Para aplicações sensíveis, prefira a versão Snap para melhor isolamento de permissão
# Check AppArmor status
sudo aa-status
# View loaded AppArmor profiles
sudo aa-status | grep profilesGuia do desenvolvedor
Declarando Interfaces para Aplicativos Snap
Declare as interfaces que seu aplicativo precisa em snapcraft.yaml:
apps:
myapp:
command: myapp
plugs:
- home
- network
- camera
- audio-playback
plugs:
home:
read: all
write: all
camera: null
audio-playback: nullMelhores práticas
- Solicite apenas as permissões necessárias - Siga o princípio do menor privilégio
- Solicitação sob demanda – Solicite permissões apenas quando o usuário acionar um recurso relacionado
- Forneça um substituto – ofereça funcionalidade alternativa quando uma permissão for negada
- Explique a finalidade - Informe claramente ao usuário por que uma permissão é necessária
Solução de problemas
Prompt de permissão não aparece
# Check if the AppArmor prompting service is running
systemctl --user status snap.snapd-desktop-integration.snapd-desktop-integration.service
# Check snapd version (requires 2.66 or higher)
snap version
# Check if the kernel supports AppArmor prompting
cat /sys/kernel/security/apparmor/features/prompting/supportedO aplicativo não funciona devido a permissões negadas
# View denied permission requests
journalctl --user | grep -i "permission\|denied\|apparmor"
# Manually grant necessary interfaces
sudo snap connect myapp:home
sudo snap connect myapp:network
# Or reset all permission decisions
rm ~/.local/share/apparmor/prompting/snap.myapp.json