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:
- Una aplicación intenta acceder a un recurso protegido (como archivos, cámara, red, etc.)
- AppArmor intercepta la solicitud de acceso
- El sistema muestra un cuadro de diálogo de solicitud de permiso.
- El usuario elige “Permitir” o “Denegar”
- El usuario puede elegir “Sólo esta vez” o “Permitir/rechazar siempre”
- El sistema recuerda la elección del usuario y la aplica a futuras solicitudes.
Tipos de recursos protegidos
| Tipo de recurso | Descripción | Ejemplo |
|---|---|---|
| Sistema de archivos | Acceder a archivos de usuario | Leer archivos en ~/Documentos |
| Cámara | Utilice dispositivos de cámara | Aplicaciones de videollamadas |
| Micrófono | Utilice dispositivos de grabación | Aplicaciones de grabación de voz |
| Ubicación | Obtener ubicación geográfica | Aplicaciones de mapas |
| Red | Acceso a la red | Acceso a puertos o direcciones específicas |
| Notificaciones | Enviar notificaciones de escritorio | Aplicaciones de mensajería |
| Inicio automático | Ejecutar al arrancar | Servicios 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 cameraVer 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/rulesRestablecer 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:homeSnap 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 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 red
# network - network access
# network-bind - listen on ports
# network-observe - network monitoring
# firewall-control - firewall control
snap connections --all | grep networkConfigurar 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 CenterConfiguració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/rulesImpacto 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 profilesGuí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: nullMejores prácticas
- Solicite solo los permisos necesarios - Siga el principio de privilegio mínimo
- Solicitud bajo demanda: solo solicite permisos cuando el usuario active una función relacionada
- Proporcionar una alternativa: ofrecer una funcionalidad alternativa cuando se deniega un permiso
- 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/supportedLa 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