Je pensais qu'il y a que AppArmor et SELinux qui limitent les droits d'un logiciel sur un système de fichiers. Ben non, il y a aussi systemd, avec les directives ReadWritePaths
, ReadOnlyPaths
et InaccessiblePaths
d'une unit de type service, donc avec les espaces de nommage Linux.
Je l'ai découvert avec le serveur de noms nsd
. Alors que je lui demandais d'écrire le fichier de zone correspond à une zone pour laquelle mon serveur est slave avec nsd-control write <nom_zone>
, nsd
a journalisé ce qui suit :
nsd[14377]: nsd[14377]: info: writing zone <CENSURE>. to file /var/named/zones/slave/<CENSURE>
nsd[14377]: error: cannot write zone <CENSURE>. file /var/named/zones/slave/<CENSURE>~: Read-only file system
nsd[14377]: cannot write zone <CENSURE>. file /var/named/zones/slave/<CENSURE>~: Read-only file system
Hé oui, je sauvegarde mes fichiers de zone, c'est-à-dire le contenu que je publie dans le DNS, dans /var/named
, tout comme on met le contenu d'un site web, c'est-à-dire ce qu'on publie, dans /var/www
.
Solution :
systemctl edit nsd.service
;Le fichier doit avoir le contenu suivant :
[Service]
ReadWritePaths=/var/lib/nsd /etc/nsd /run /var/named/zones/slave
systemctl daemon-reload
;systemctl restart nsd.service
.