Previous: Uso de la facilidad de delegación de trabajo, Up: Preparación del daemon [Contents][Index]
Guix incluye un archivo de política SELinux en etc/guix-daemon.cil que puede ser instalado en un sistema donde SELinux está activado, para etiquetar los archivos Guix y especificar el comportamiento esperado del daemon. Ya que el sistema Guix no proporciona una política base de SELinux, la política del daemon no puede usarse en el sistema Guix.
Nota: The
guix-install.sh
binary installation script offers to perform the steps below for you (see Instalación binaria).
Para instalar la política ejecute esta orden como 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
Una vez la política está instalada, el sistema de archivos ha sido
re-etiquetado, y el daemon ha sido reiniciado, debería ejecutarse en el
contexto guix_daemon_t
. Puede confirmarlo con la siguiente orden:
ps -Zax | grep guix-daemon
Monitorice los archivos de log de SELinux mientras ejecuta una orden como
guix build hello
para convencerse que SELinux permite todas las
operaciones necesarias.
Esta política no es perfecta. Aquí está una lista de limitaciones o comportamientos extraños que deben ser considerados al desplegar la política SELinux provista para el daemon Guix.
guix_daemon_socket_t
isn’t actually used. None of the socket
operations involve contexts that have anything to do with
guix_daemon_socket_t
. It doesn’t hurt to have this unused label, but
it would be preferable to define socket rules for only this label.
guix gc
cannot access arbitrary links to profiles. By design, the
file label of the destination of a symlink is independent of the file label
of the link itself. Although all profiles under $localstatedir are
labelled, the links to these profiles inherit the label of the directory
they are in. For links in the user’s home directory this will be
user_home_t
. But for links from the root user’s home directory, or
/tmp, or the HTTP server’s working directory, etc, this won’t work.
guix gc
would be prevented from reading and following these links.
/gnu/store.+-(gux-.+|profile)/bin/guix-daemon
tienen asignada
la etiqueta guix_daemon_exec_t
; esto significa que cualquier
archivo con ese nombre en cualquier perfil tendrá permitida la ejecución en
el dominio guix_daemon_t
. Esto no es ideal. Una atacante podría
construir un paquete que proporcione este ejecutable y convencer a la
usuaria para instalarlo y ejecutarlo, lo que lo eleva al dominio
guix_daemon_t
. Llegadas a este punto, SELinux no puede prevenir que
acceda a los archivos permitidos para los procesos en dicho dominio.
You will need to relabel the store directory after all upgrades to
guix-daemon, such as after running guix pull
. Assuming the
store is in /gnu, you can do this with restorecon -vR /gnu
, or
by other means provided by your operating system.
Podríamos generar una política mucho más restrictiva en tiempo de
instalación, de modo que solo el nombre exacto del archivo del
ejecutable de guix-daemon
actualmente instalado sea marcado como
guix_daemon_exec_t
, en vez de usar una expresión regular amplia. La
desventaja es que root tendría que instalar o actualizar la política en
tiempo de instalación cada vez que se actualizase el paquete de Guix que
proporcione el ejecutable de guix-daemon
realmente en ejecución.
Previous: Uso de la facilidad de delegación de trabajo, Up: Preparación del daemon [Contents][Index]