Skip to Content

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:

  1. Eine App versucht, auf eine geschützte Ressource (z. B. Dateien, Kamera, Netzwerk usw.) zuzugreifen.
  2. AppArmor fängt die Zugriffsanforderung ab
  3. Das System zeigt einen Dialog zur Berechtigungsaufforderung an
  4. Der Benutzer wählt „Zulassen“ oder „Verweigern“
  5. Der Benutzer kann „Nur dieses eine Mal“ oder „Immer zulassen/verweigern“ wählen.
  6. Das System merkt sich die Wahl des Benutzers und wendet sie auf zukünftige Anfragen an

Geschützte Ressourcentypen

RessourcentypBeschreibungBeispiel
DateisystemGreifen Sie auf Benutzerdateien zuDateien in ~/Documents lesen
KameraVerwenden Sie KamerageräteVideoanruf-Apps
MikrofonVerwenden Sie AufnahmegeräteSprachaufzeichnungs-Apps
StandortErmitteln Sie den geografischen StandortKarten-Apps
NetzwerkNetzwerkzugriffZugriff auf bestimmte Ports oder Adressen
BenachrichtigungenSenden Sie Desktop-BenachrichtigungenMessaging-Apps
AutostartBeim Booten ausführenHintergrunddienste

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 camera

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

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

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

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

Netzwerkschnittstellen

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

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

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

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

Entwicklerhandbuch

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

Best Practices

  1. Nur erforderliche Berechtigungen anfordern – Befolgen Sie das Prinzip der geringsten Rechte
  2. Bei Bedarf anfordern – Fordern Sie Berechtigungen nur an, wenn der Benutzer eine entsprechende Funktion auslöst
  3. Stellen Sie einen Fallback bereit – Bieten Sie alternative Funktionen an, wenn eine Berechtigung verweigert wird
  4. 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/supported

App 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