Permisos necesarios para modificar etiquetas SELinux

Permisos necesarios para modificar etiquetas SELinux

Estoy escribiendo código compatible con SELinux. Soy nuevo en este módulo de seguridad y estoy teniendo una curva de aprendizaje pronunciada.

Para que mi código funcione en un entorno SELinux, necesito poder volver a etiquetar archivos. Por ejemplo, estoy montando sistemas de archivos temporales y quiero restaurar la etiqueta original después de realizar el montaje.

Obviamente necesito ser root (tener capacidad CAP_SYS_ADMIN) para la parte de montaje, pero ¿necesito ser root para la parte de reetiquetado?

En Fedora puedo volver a etiquetar archivos de mi propiedad, por ejemplo, puedo hacer lo siguiente como usuario sin privilegios:

$ touch /tmp/test
$ ls -Z /tmp/test
unconfined_u:object_r:user_tmp_t:s0 /tmp/test
$ chcon system_u:object_r:etc_t:s0 /tmp/test
$ ls -Z /tmp/test
system_u:object_r:etc_t:s0 /tmp/test

Parece que no hay permiso para volver a etiquetar archivos propiedad de un usuario diferente.

Pero ahora encontré lo siguiente en RedHatmanual:

La política de SELinux controla si los usuarios pueden modificar el contexto de SELinux para cualquier archivo determinado.

lo que parece indicar que este comportamiento es realmente configurable y que no puedo confiar en poder volver a etiquetar archivos de mi propiedad.

EDITAR: Parece que Fedora implementa esto usando constraints.

# dnf install setools-console
# seinfo --constrain
...
constrain file {relabelto create relabelfrom } (u1 == u2 or ( t1 == can_change_object_identity ));
...

información relacionada