Beispiel: Confinement für dhclient erweitern

Problem: unter Ubuntu (ab 18.04) und Debian (ab 10) führt

dhclient -d -sf /usr/bin/env eth0

zu einem Fehler: execve (/usr/bin/env, …): Permission denied

Hinweise zu dem Problem finden sich im Kernel Log oder im Log des auditd:

journalctl -k | grep /usr/bin/env

apparmor=„DENIED“ operation=„exec“ profile=„/sbin/dhclient“ name=„/usr/bin/env“ comm=„dhclient“ requested_mask=„x“ denied_mask=„x“

Per default läuft dhclient in einem confinement:

aa-status | grep dhclient

Lösung: /usr/bin/env zum confinement hinzufügen:

/etc/apparmor.d/sbin.dhclient
/{,usr/}sbin/dhclient … {
…
  /{,usr/}bin/env ix,
…

Syntax testen:

apparmor_parser -d /etc/apparmor.d/sbin.dhclient  | grep -C3 env

Profil neu laden:

apparmor_parser -r /etc/apparmor.d/sbin.dhclient

OpenSUSE: systemctl stop apparmor will not work

OpenSUSE Leap 15.0: „systemctl stop apparmor will not work. To unload all AppArmor profiles, use the new command aa-teardown instead which matches the previous behavior of systemctl stop apparmor“ Quelle