Table des matières
AppArmor : confinement et diagnostic
1. Rôle et fonctionnement
AppArmor limite les ressources accessibles à un programme selon un profil. Un fichier peut donc être accessible avec les permissions Linux classiques tout en restant interdit au service par son profil AppArmor.
Dans le cas d’Unbound, le problème concerne la journalisation : le service doit pouvoir écrire dans le chemin prévu et son profil doit autoriser cette opération.
2. Diagnostic
sudo aa-status sudo journalctl -k -b | grep -i apparmor sudo journalctl -u unbound -b --no-pager ls -ld /var/log/unbound ls -l /var/log/unbound
Comparer le chemin refusé, le programme concerné et l'opération demandée. Vérifier également le propriétaire et les droits du répertoire parent.
3. Correction ciblée
Identifier le profil chargé et son éventuel fichier local d'extension. Ajouter uniquement l'autorisation nécessaire au chemin de journalisation, selon la syntaxe du profil. Recharger ensuite le profil concerné :
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.unbound
Cette commande suppose que ce fichier est bien le profil utilisé sur la machine. Vérifier son existence et son contenu avant exécution.
4. Vérification et dépannage
Relancer le service, générer une requête DNS et vérifier que le journal reçoit un événement sans nouveau refus AppArmor. Le mode complain peut aider ponctuellement au diagnostic, mais il ne doit pas être confondu avec le mode enforce attendu pour le confinement.
La désactivation globale d'AppArmor masque la cause et affaiblit tous les services protégés. Conserver la correction dans l'historique de configuration avec etckeeper.

