Aufforderung zur Erlaubnis
Ubuntu 26.04 führt ein neues Berechtigungsaufforderungssystem ein, das ein Eingabeaufforderungsfenster anzeigt, in dem die Benutzerautorisierung angefordert wird, wenn eine App versucht, auf vertrauliche Ressourcen zuzugreifen. Dieser Mechanismus verbessert die Desktop-Sicherheit erheblich, indem er Benutzern eine detaillierte Kontrolle über die Berechtigungen jeder App ermöglicht.
Wie es funktioniert
Kernkonzepte
Das Berechtigungsaufforderungssystem basiert auf der Aufforderungsschnittstelle von AppArmor 4.0. Wenn eine eingeschränkte App (hauptsächlich Snap-Apps) einen Vorgang versucht, der bestimmte Berechtigungen erfordert, fängt das System die Anfrage ab und zeigt einen Dialog an, in dem der Benutzer entscheiden kann, ob er sie autorisieren möchte.
Der Arbeitsablauf ist wie folgt:
- Eine App versucht, auf eine geschützte Ressource (z. B. Dateien, Kamera, Netzwerk usw.) zuzugreifen.
- AppArmor fängt die Zugriffsanforderung ab
- Das System zeigt einen Dialog zur Berechtigungsaufforderung an
- Der Benutzer wählt „Zulassen“ oder „Verweigern“
- Der Benutzer kann „Nur dieses eine Mal“ oder „Immer zulassen/verweigern“ wählen.
- Das System merkt sich die Wahl des Benutzers und wendet sie auf zukünftige Anfragen an
Geschützte Ressourcentypen
| Ressourcentyp | Beschreibung | Beispiel |
|---|---|---|
| Dateisystem | Greifen Sie auf Benutzerdateien zu | Dateien in ~/Documents lesen |
| Kamera | Verwenden Sie Kamerageräte | Videoanruf-Apps |
| Mikrofon | Verwenden Sie Aufnahmegeräte | Sprachaufzeichnungs-Apps |
| Standort | Ermitteln Sie den geografischen Standort | Karten-Apps |
| Netzwerk | Netzwerkzugriff | Zugriff auf bestimmte Ports oder Adressen |
| Benachrichtigungen | Senden Sie Desktop-Benachrichtigungen | Messaging-Apps |
| Autostart | Beim Booten ausführen | Hintergrunddienste |
Schnittstelle zur Berechtigungsaufforderung
Wenn eine Berechtigungsaufforderung ausgelöst wird, wird ein Dialogfeld auf Systemebene mit den folgenden Informationen angezeigt:
- Name und Symbol der anfragenden App
- Art der angeforderten Erlaubnis
- Spezifischer Ressourcenpfad (z. B. ein Dateipfad)
- Aktionsoptionen:
- Einmal zulassen
- Immer zulassen
- Einmal leugnen
- Immer leugnen
Erweiterte Optionen
Für Dateisystemberechtigungen können Benutzer außerdem Folgendes wählen:
- Erlauben Sie den Zugriff auf eine bestimmte Datei
- Erlauben Sie den Zugriff auf ein gesamtes Verzeichnis
- Schreibgeschützten Zugriff zulassen
- Lese-/Schreibzugriff zulassen
Berechtigungen verwalten
Über Security Center
Öffnen Sie den Abschnitt „App-Berechtigungen“ von Security Center, um:
- Alle erteilten Berechtigungen anzeigen
- Berechtigungen ändern oder widerrufen
- Durchsuchen Sie nach App oder Berechtigungstyp
Über die Befehlszeile
# 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 cameraBerechtigungsregeln anzeigen
Regeln zur Berechtigungsaufforderung werden von snapd verwaltet (keine handgeschriebenen Dateien). Sie können sie über die Grafik „Security Center“ anzeigen und verwalten oder über die Eingabeaufforderungs-API von snapd abfragen.
# 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/rulesBerechtigungen zurücksetzen
# 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 Schnittstellen erklärt
Das Berechtigungsaufforderungssystem arbeitet hauptsächlich mit Snap-Schnittstellen. Zu den gängigen Schnittstellen gehören:
Dateizugriffsschnittstellen
# 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 filesHardware-Schnittstellen
# camera - camera
snap interface camera
# audio-record - microphone
snap interface audio-record
# bluetooth-control - Bluetooth
snap interface bluetooth-control
# joystick - game controller
snap interface joystickNetzwerkschnittstellen
# network - network access
# network-bind - listen on ports
# network-observe - network monitoring
# firewall-control - firewall control
snap connections --all | grep networkKonfigurieren des Verhaltens der Berechtigungsaufforderung
Globale Einstellungen
# 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 CenterKonfiguration pro App
# 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 -Persistente Autorisierungsregeln
Regeln zur Berechtigungsaufforderung werden einheitlich von snapd verwaltet und nicht über handgeschriebene Dateien konfiguriert. Wenn Sie in einem Eingabeaufforderungsdialog die Option „Immer zulassen“ auswählen, erstellt snapd automatisch eine dauerhafte Regel.
Um Regeln programmgesteuert zu verwalten, verwenden Sie die Prompting API (/v2/interfaces/requests/rules) von snapd, initiiert von einem Client, der über die Schnittstelle snap-interfaces-requests-control verfügt. Das Abfragen, Erstellen und Löschen von Regeln wird von snapd erledigt, anstatt JSON-Dateien direkt auf der Festplatte zu bearbeiten.
# List the current persistent rules
sudo curl -s --unix-socket /run/snapd.socket \
http://localhost/v2/interfaces/requests/rulesAuswirkungen auf traditionelle Deb-Apps
Das Berechtigungsaufforderungssystem zielt hauptsächlich auf Snap-Apps ab. Herkömmliche Apps, die über APT installiert werden, verwenden weiterhin das herkömmliche Linux-Berechtigungsmodell:
- Deb-Apps verfügen standardmäßig über alle Berechtigungen auf Benutzerebene
- AppArmor kann manuell konfiguriert werden, um Deb-Apps einzuschränken
- Für sensible Anwendungen bevorzugen Sie die Version Snap für eine bessere Berechtigungsisolierung
# Check AppArmor status
sudo aa-status
# View loaded AppArmor profiles
sudo aa-status | grep profilesEntwicklerhandbuch
Deklarieren von Schnittstellen für Snap-Apps
Deklarieren Sie die Schnittstellen, die Ihre App benötigt, in snapcraft.yaml:
apps:
myapp:
command: myapp
plugs:
- home
- network
- camera
- audio-playback
plugs:
home:
read: all
write: all
camera: null
audio-playback: nullBest Practices
- Nur erforderliche Berechtigungen anfordern – Befolgen Sie das Prinzip der geringsten Rechte
- Bei Bedarf anfordern – Fordern Sie Berechtigungen nur an, wenn der Benutzer eine entsprechende Funktion auslöst
- Stellen Sie einen Fallback bereit – Bieten Sie alternative Funktionen an, wenn eine Berechtigung verweigert wird
- Erläutern Sie den Zweck – Informieren Sie den Benutzer klar und deutlich darüber, warum eine Berechtigung erforderlich ist
Fehlerbehebung
Berechtigungsaufforderung wird nicht angezeigt
# 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/supportedApp funktioniert aufgrund verweigerter Berechtigungen nicht
# 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