Como Hauke mencionou, o SELinux é provavelmente a questão. Você está tentando alterar as permissões para um usuário / modo diferente? ls -lZ lhe dará o arquivo com o contexto particular do selinux.
Um exemplo seria:
rw-r--r--. root root system_u:object_r:etc_t:s0 rhel-source.repo
se o contexto não estiver certo, não funcionará.
Nesse caso, # restorecon /etc/yum.repos.d/*
corrigirá os contextos.
No que diz respeito ao seu script, no final, você provavelmente deve executar o comando restorecon no diretório /etc/yum.repos.d para garantir que os contextos dos arquivos de repo estejam corretos. O sistema operacional, então, trabalhará com eles.