Uma alteração de rótulo "temporário" é feita por meio do comando chcon :
bash-4.2# touch freetds.conf.new
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new
bash-4.2# chcon -t etc_t -u system_u freetds.conf.new
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root system_u:object_r:etc_t:s0 freetds.conf.new
Uma alteração permanente seria feita por meio do comando semanage . Isso adicionará (ou modificará) uma linha em /etc/selinux/targeted/contexts/files/file_contexts.local , que pode ser aplicada com restorecon .
Então, vamos começar de novo com um novo arquivo:
bash-4.2# rm freetds.conf.new
bash-4.2# touch freetds.conf.new
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new
Podemos adicionar uma regra para isso:
bash-4.2# semanage fcontext -a -t etc_t -s system_u /etc/freetds.conf.new
bash-4.2# cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Do not edit directly.
/etc/freetds.conf.new system_u:object_r:etc_t:s0
Isso não mudou o arquivo ainda, embora
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new
Então agora nós aplicamos:
bash-4.2# restorecon -vF /etc/freetds.conf.new
restorecon reset /etc/freetds.conf.new context unconfined_u:object_r:etc_t:s0->system_u:object_r:etc_t:s0
bash-4.2# ls -lZ /etc/freetds.conf.new
-rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/freetds.conf.new
ETA: Se você for copiar o freetds.conf.new para freetds.conf depois de atualizá-lo, provavelmente ficarei com o comando chcon ; é mais fácil e o conjunto de regras existente lidará com a remarcação quando tiver o nome correto. Eu só usaria o formulário semanage se esse fosse o nome final.