Skip to Content

Solicitud de permiso

Ubuntu 26.04 presenta un nuevo sistema de solicitud de permisos que muestra una ventana solicitando autorización del usuario cuando una aplicación intenta acceder a recursos confidenciales. Este mecanismo mejora significativamente la seguridad del escritorio al brindar a los usuarios un control detallado sobre los permisos de cada aplicación.

Cómo funciona

Conceptos básicos

El sistema de solicitud de permisos se basa en la interfaz de solicitud de AppArmor 4.0. Cuando una aplicación confinada (principalmente aplicaciones Snap) intenta una operación que requiere permisos específicos, el sistema intercepta la solicitud y muestra un cuadro de diálogo para que el usuario decida si la autoriza.

El flujo de trabajo es el siguiente:

  1. Una aplicación intenta acceder a un recurso protegido (como archivos, cámara, red, etc.)
  2. AppArmor intercepta la solicitud de acceso
  3. El sistema muestra un cuadro de diálogo de solicitud de permiso.
  4. El usuario elige “Permitir” o “Denegar”
  5. El usuario puede elegir “Sólo esta vez” o “Permitir/rechazar siempre”
  6. El sistema recuerda la elección del usuario y la aplica a futuras solicitudes.

Tipos de recursos protegidos

Tipo de recursoDescripciónEjemplo
Sistema de archivosAcceder a archivos de usuarioLeer archivos en ~/Documentos
CámaraUtilice dispositivos de cámaraAplicaciones de videollamadas
MicrófonoUtilice dispositivos de grabaciónAplicaciones de grabación de voz
UbicaciónObtener ubicación geográficaAplicaciones de mapas
RedAcceso a la redAcceso a puertos o direcciones específicas
NotificacionesEnviar notificaciones de escritorioAplicaciones de mensajería
Inicio automáticoEjecutar al arrancarServicios en segundo plano

Interfaz de solicitud de permiso

Cuando se activa una solicitud de permiso, aparece un cuadro de diálogo a nivel del sistema que contiene la siguiente información:

  • Nombre e ícono de la aplicación solicitante
  • Tipo de permiso solicitado
  • Ruta de recurso específica (como una ruta de archivo)
  • Opciones de acción:
    • permitir una vez
    • Permitir siempre
    • negar una vez
    • siempre negar

Opciones avanzadas

Para los permisos del sistema de archivos, los usuarios pueden elegir además:

  • Permitir el acceso a un archivo específico
  • Permitir el acceso a un directorio completo
  • Permitir acceso de solo lectura
  • Permitir acceso de lectura y escritura

Administrar permisos

Vía Security Center

Abra la sección “Permisos de la aplicación” de Security Center para:

  • Ver todos los permisos concedidos
  • Modificar o revocar permisos
  • Navegar por aplicación o por tipo de permiso

A través de la línea 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

Ver reglas de permiso

Las reglas de solicitud de permisos las administra snapd (no archivos escritos a mano). Puede verlos y administrarlos a través del gráfico “Security Center” o consultarlos a través de la API de solicitud de 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

Restablecer permisos

# 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

Snap Interfaces explicadas

El sistema de solicitud de permiso opera principalmente alrededor de interfaces Snap. Las interfaces comunes incluyen:

Interfaces de acceso a archivos

# 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 red

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

Configurar el comportamiento de solicitud de permiso

Configuración global

# 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

Configuración por aplicación

# 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 -

Reglas de autorización persistentes

snapd administra de manera uniforme las reglas de solicitud de permisos y no se configuran mediante archivos escritos a mano. Cuando elige “Permitir siempre” en un cuadro de diálogo emergente, snapd crea automáticamente una regla persistente.

Para administrar reglas mediante programación, use la API de solicitud de snapd (/v2/interfaces/requests/rules), iniciada por un cliente que contiene la interfaz snap-interfaces-requests-control; snapd maneja la consulta, creación y eliminación de reglas en lugar de editar directamente archivos JSON en el disco.

# List the current persistent rules sudo curl -s --unix-socket /run/snapd.socket \ http://localhost/v2/interfaces/requests/rules

Impacto en las aplicaciones deb tradicionales

El sistema de solicitud de permisos se dirige principalmente a aplicaciones Snap. Las aplicaciones tradicionales instaladas a través de APT todavía usan el modelo de permisos convencional de Linux:

  • Las aplicaciones deb tienen todos los permisos a nivel de usuario de forma predeterminada.
  • AppArmor se puede configurar manualmente para restringir aplicaciones deb
  • Para aplicaciones sensibles, prefiera la versión Snap para un mejor aislamiento de permisos.
# Check AppArmor status sudo aa-status # View loaded AppArmor profiles sudo aa-status | grep profiles

Guía para desarrolladores

Declaración de interfaces para aplicaciones Snap

Declare las interfaces que su aplicación necesita en snapcraft.yaml:

apps: myapp: command: myapp plugs: - home - network - camera - audio-playback plugs: home: read: all write: all camera: null audio-playback: null

Mejores prácticas

  1. Solicite solo los permisos necesarios - Siga el principio de privilegio mínimo
  2. Solicitud bajo demanda: solo solicite permisos cuando el usuario active una función relacionada
  3. Proporcionar una alternativa: ofrecer una funcionalidad alternativa cuando se deniega un permiso
  4. Explique el propósito: informe claramente al usuario por qué se necesita un permiso.

Solución de problemas

El mensaje de permiso no 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

La aplicación no funciona debido a permisos denegados

# 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