Précédent: Utiliser le dispositif de déchargement, Monter: Paramétrer le démon [Table des matières][Index]
Guix inclus un fichier de politique SELinux dans etc/guix-daemon.cil qui peut être installé sur un système où SELinux est activé pour que les fichiers Guix soient étiquetés et pour spécifier le comportement attendu du démon. Comme Guix System ne fournit pas de politique SELinux de base, la politique du démon ne peut pas être utilisée sur le système Guix.
Remarque : The
guix-install.sh
binary installation script offers to perform the steps below for you (voir Installation binaire).
Pour installer la politique, lancez cette commande en root :
semodule -i /var/guix/profiles/per-user/root/current-guix/share/selinux/guix-daemon.cil
Then, as root, relabel the file system, possibly after making it writable:
mount -o remount,rw /gnu/store restorecon -R /gnu /var/guix
At this point you can start or restart guix-daemon
; on a
distribution that uses systemd as its service manager, you can do that with:
systemctl restart guix-daemon
Une fois la politique installée, le système de fichier ré-étiqueté et le
démon redémarré, il devrait être lancé dans le contexte
guix_daemon_t
. Vous pouvez le confirmer avec la commande suivante :
ps -Zax | grep guix-daemon
Surveillez les fichiers journaux de SELinux pendant que vous lancez une
commande comme guix build hello
pour vous convaincre que SELniux
permet toutes les opérations nécessaires.
La politique n’est pas parfaite. Voici une liste de limitations et de bizarreries qui vous devriez prendre en compte avant de déployer la politique SELinux fournie pour le démon Guix.
guix_daemon_socket_t
n’est pas vraiment utilisé. Aucune des
opérations sur les sockets n’impliquent de contextes qui ont quoi que ce
soit à voir avec guix_daemon_socket_t
. Ça ne fait pas de mal d’avoir
une étiquette inutilisée, mais il serait préférable de définir des règles
sur les sockets uniquement pour cette étiquette.
guix gc
ne peut pas accéder à n’importe quel lien vers les profils.
Par conception, l’étiquette de fichier de la destination d’un lien
symbolique est indépendant de l’étiquette du lien lui-même. Bien que tous
les profils sous $localstatedir aient une étiquette, les liens vers
ces profils héritent de l’étiquette du répertoire dans lequel ils se
trouvent. Pour les liens dans le répertoire personnel cela sera
user_home_t
. Mais pour les liens du répertoire personnel de root, ou
/tmp, ou du répertoire de travail du serveur HTTP, etc, cela ne
fonctionnera pas. SELinux empêcherait guix gc
de lire et de suivre
ces liens.
/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon
reçoivent l’étiquette
guix_daemon_exec_t
; cela signifie que tout fichier avec ce
nom dans n’importe quel profil serait autorisé à se lancer dans le domaine
guix_daemon_t
. Ce n’est pas idéal. Un attaquant pourrait construire
un paquet qui fournit cet exécutable et convaincre un·e utilisateur·rice de
l’installer et de le lancer, ce qui l’élève dans le domaine
guix_daemon_t
. À ce moment SELinux ne pourrait pas l’empêcher
d’accéder à des fichiers autorisés pour les processus de ce domaine.
Vous devrez renommer le répertoire du dépôt après chaque mise à jour de
guix-daemon, par exemple après avoir lancé guix pull
. En
supposant que le dépôt est dans /gnu, vous pouvez le faire avec
restorecon -vR /gnu
, ou par d’autres moyens fournis par votre système
d’exploitation.
Nous pourrions générer une politique bien plus restrictive à l’installation,
pour que seuls les noms de fichiers exacts de l’exécutable
guix-daemon
actuellement installé soit étiqueté avec
guix_daemon_exec_t
, plutôt que d’utiliser une expression rationnelle
plus large. L’inconvénient c’est que root devrait installer ou mettre à
jour la politique à l’installation à chaque fois que le paquet Guix qui
fournit l’exécutable guix-daemon
effectivement exécuté est mis à
jour.
Précédent: Utiliser le dispositif de déchargement, Monter: Paramétrer le démon [Table des matières][Index]