
Recentemente, tivemos uma falha de energia e uma falha simultânea do gerador de backup, grave o suficiente para exigir o desligamento seguro de todos os servidores enquanto seus UPSs estavam descarregando.
Ao trazer de volta um servidor CentOS 7.4.1708 (sua primeira "reinicialização" em meses, mas está atualizado em termos de atualizações do CentOS), bati em uma parede de tijolos que me impedia de inicializá-lo com o SELinux habilitado. Pesquisei extensivamente, mas não consigo encontrar evidências de que alguém tenha passado por isso, nem sei o que tentar a seguir. Espero que alguém aqui possa oferecer algumas idéias.
Aqui está a linha do tempo:
- Inicializado
A inicialização falhou devido a vários serviços que não foram inicializados:
FAILED Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. FAILED Failed to start Authorization Manager. See 'systemctl status polkit.service' for details. DEPEND Dependency failed for Dynamic System Tuning Daemon.
Solicitado poresseEu reiniciei com
selinux=0
o grubIsso funciona e faz o sistema funcionar, mas com o SELinux desabilitado, o que não é viável para nós como outra coisa senão uma solução temporária
Seguidoconselhos encontrados on-line:
sudo yum reinstall selinux-policy-targeted
Reiniciado
A inicialização falhou devido a:
Failed to load SELinux policy, freezing
Reinicializado com
selinux=0
o grub novamenteEncontradomais conselhosassim realizado:
sudo yum reinstall selinux-policy-targeted sudo touch /.autorelabel
e definir permissivo em
/etc/selinux/config
Reiniciado
Poderia ver o seguinte banner:
Warning -- SELinux targeted policy relabel is required. Relabeling could take a very long time, depending on file system size and speed of hard drives.
mas em vez de realmente realizar a nova rotulagem, o sistema se reinicializou imediatamente – rápido demais para ver qualquer outra saída
A inicialização falhou novamente com o erro original.
Então, ugh, estamos de volta aqui novamente. E posso ver que isso
/.autorelabel
ainda existe, sugerindo que a reetiquetagem não aconteceu. É surpreendente para mim que voltemos à estaca zero com os erros.Lembre-se também de que o SELinux ainda está em modo permissivo, não obrigatório.
O resultado final é que não consigo ativar o SELinux no modo permissivo ou de imposição, o que não é bom.
Como devo proceder?
Responder1
dr:Tudo se resumiu a um valor inválido para SELINUXTYPE
.
Certifique-se SELINUXTYPE
de que possui um valor válido e, em seguida, execute a nova rotulagem, se necessário (por exemplo, se você inicializou com o SELinux desligado durante o diagnóstico), reinicie e abra o champanhe.
Por alguma razão, e em algum momento, /etc/selinux/config
adquiriu a configuração SELINUXTYPE=permissive
.
Esta não é uma opção válida para esse parâmetro e parece fazer com que o valor retorne ao valor "padrão", com base no motivo listado para a falha do Dbus, do Login Service e do Authorization Manager:
Failed to open "/etc/selinux/default/contexts/dbus_contexts": No such file or directory
Isso é problemático porque não há selinux-policy-default
pacote no CentOS 7 (no Debian, por exemplo, foi removido deliberadamente em Jessieentão imagino que o mesmo seja verdade aqui).
Eu suspeito que é também por isso que as tentativas de renomear o sistema de arquivos usando restorecon
(do modo de usuário único e de um shell alcançado por init=/sbin/sh
) resultaram em saídas desconcertantes "Nenhum arquivo ou diretório" e getenforce
ainda mostrariam "Desativado" sem motivo evidente .
Para mudar para as selinux-policy-targeted
coisas queéinstalado, corrigi a configuração SELINUXTYPE=targeted
(como acredito que deveria ter sido o tempo todo) e, em seguida, reiniciei novamente com enforcing=0 autorelabel=1
.
A reetiquetagem então ocorreu. Depois disso, o sistema inicializou normalmente.
Responder2
Você deve ser capaz de renomear o sistema de arquivos com:
# restorecon -rv /
Não tenho 100% de certeza se isso funciona no modo Desativado, talvez seja necessário estar em Permissivo/Aplicativo.
Você pode inicializar com o selinux habilitado e init=/bin/sh
?
Responder3
Você deveria ter inicializado no modo de recuperação, em seguida, root no terminal shell e colocado desativado = 1, em seguida, retomar sem reinicializar e desativá-lo no arquivo de configuração ... Em seguida, desinstale o selinux e reinicie
Responder4
Às vezes, o mesmo problema pode ser encontrado devido à política do SELinux, mesmo que o SELinuxtype esteja configurado corretamente. E na tela de inicialização aparece a seguinte linha:
Failed to load SELinux policy, freezing
Para resolver este problema como outra solução alternativa, você pode definir o SELinux para permissive
o modo primeiro
e depois reiniciar a máquina, e você verá a política de geração do SELinux na tela de reinicialização. Depois disso, você pode configurá-lo para o modo de aplicação novamente sem problemas.
Antes de resolver o problema, você pode verificar o pacote de desenvolvimento de políticas.
sudo yum install policycoreutils-devel
E talvez você receba um erro ao tentar instalá-lo. Isso ocorre principalmente por causa de pacotes de conflito e ainda aparece até mesmo para o Red Hat 8