Permissões necessárias para modificar rótulos SELinux

Permissões necessárias para modificar rótulos SELinux

Estou escrevendo um código compatível com SELinux. Sou novo neste módulo de segurança e estou tendo uma curva de aprendizado acentuada.

Para que meu código funcione em um ambiente SELinux, preciso poder renomear os arquivos. Por exemplo, estou montando sistemas de arquivos temporários e quero restaurar o rótulo original após fazer a montagem.

Obviamente preciso ser root (ter capacidade CAP_SYS_ADMIN) para a parte de montagem, mas preciso ser root para a parte de reetiquetagem?

No Fedora, tenho permissão para renomear arquivos de minha propriedade, por exemplo, posso fazer o seguinte como usuário sem privilégios:

$ 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 não há permissão para renomear arquivos pertencentes a um usuário diferente.

Mas agora encontrei o seguinte no RedHatmanual:

A política SELinux controla se os usuários podem modificar o contexto SELinux para qualquer arquivo.

o que parece indicar que esse comportamento é realmente configurável e que não posso confiar na capacidade de renomear arquivos de minha propriedade.

EDITAR: Parece que o Fedora implementa isso usando constraints.

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

informação relacionada