NetworkManager, dhclient et apparmor

Tags: #<Tag:0x00007f39f0bdab38> #<Tag:0x00007f39f0bdaa70> #<Tag:0x00007f39f0bda980> #<Tag:0x00007f39f0bda8b8>

Bonjour,
J’utilise NetworkManager avec dhclient au lieu du client pour gérer les messages DHCP ntp-servers avec systemd-timesyncd (cf NetworkManager et systemd.timesyncd).

Seulement voilà, le profile sbin.dhclient dans apparmor ne prend pas en compte l’utilisation de celui-ci et NetworkManager pour que le fichier pid de dhclient soit écrit dans /run/NetworkManager. Il génère un message d’erreur de droit d’accès.

Il n’y a que trois moyens n’utilisant pas de « bidouille » pour corriger:

  • Diminuer la sécurité apparmor de sbin.dhclient en le passant de enforce en complain avec aa-compain sbin.dhclient
  • Diminuer la sécurité en modifiant les droits sur le répertoire /run/NetworkManager avec chmod g+w /run/NetworkManager (qui s’apparente à une bidouille justement)
  • Modifier le profil apparmor de dhclient en ajoutant les lignes:
/{,var/}run/NetworkManager/dhclient{6,}.pid    rw,
/{,var/}run/NetworkManager/dhclient{6,}{-,.}*.pid  rw,

sous les lignes:

/{,var/}run/dhclient{6,}.pid    rw,
/{,var/}run/dhclient{6,}{-,.}*.pid  rw,

dans le fichier /etc/apparmor.d/sbin.dhclient.

le plus étrange c’est que NetworkManager est bien pris en compte pour le répertoire /var/lib/NetworkManager, c’est peut être un oubli, ou bien c’est dans NetworkManager que se situe le problème en cherchant à écrire dans /runNetworkManager (pourtant légitime) au lieu de /run.

Personnellement, je pense que modifier le profile apparmor de dhclient est la solution la plus propre.

**A toutes fins utiles, penser que si vous avez un service, ou un process qui génère des problèmes de droits d’accès, pensez à vérifier son profil apparmor et les logs apparmor dans auditd **.