Skip to Content

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:

  1. Um aplicativo tenta acessar um recurso protegido (como arquivos, câmera, rede, etc.)
  2. AppArmor intercepta a solicitação de acesso
  3. O sistema exibe uma caixa de diálogo de solicitação de permissão
  4. O usuário escolhe “Permitir” ou “Negar”
  5. O usuário pode escolher “Só desta vez” ou “Sempre permitir/negar”
  6. O sistema lembra a escolha do usuário e aplica-a a solicitações futuras

Tipos de recursos protegidos

Tipo de recursoDescriçãoExemplo
Sistema de arquivosAcessar arquivos do usuárioLendo arquivos em ~/Documents
CâmeraUse dispositivos de câmeraAplicativos de videochamada
MicrofoneUse dispositivos de gravaçãoAplicativos de gravação de voz
LocalizaçãoObter localização geográficaAplicativos de mapas
RedeAcesso à redeAcesso a portas ou endereços específicos
NotificaçõesEnvie notificações na área de trabalhoAplicativos de mensagens
Início automáticoExecute na inicializaçãoServiç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 camera

Visualizando 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/rules

Redefinindo 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:home

Interfaces 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 files

Interfaces 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 joystick

Interfaces de rede

# network - network access # network-bind - listen on ports # network-observe - network monitoring # firewall-control - firewall control snap connections --all | grep network

Configurando 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 Center

Configuraçã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/rules

Impacto 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 profiles

Guia 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: null

Melhores práticas

  1. Solicite apenas as permissões necessárias - Siga o princípio do menor privilégio
  2. Solicitação sob demanda – Solicite permissões apenas quando o usuário acionar um recurso relacionado
  3. Forneça um substituto – ofereça funcionalidade alternativa quando uma permissão for negada
  4. 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/supported

O 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