Consegui duplicar esse problema em um sistema CentOS 7.5 recém-instalado.
Aqui está o que está acontecendo:
Quando você inicializa com init=/bin/bash
, há dois problemas que você pode encontrar:
-
O sistema de arquivos raiz pode ser montado somente para leitura. Nesse caso,
passwd
vai reclamar de umAuthentication token manipulation error
.Isso é bastante óbvio: se o sistema de arquivos não estiver montado como leitura-gravação, não será possível gravar nele.
-
A política do SELinux não pode ser carregada. Nesse caso,
passwd
alterará com sucesso a senha, mas você terá o problema descrito na pergunta original acima: ninguém conseguirá fazer o login.Os hashes de senha são armazenados no arquivo
/etc/shadow
. Este arquivo normalmente possui o tipo SELinuxshadow_t
. No entanto, alterar o arquivo enquanto nenhuma diretiva do SELinux é carregada faz com que o tipo SELinux seja removido do arquivo, deixando-o comounlabeled_t
. Assim, serviços que tentam ler o arquivo para autenticar logins não são mais capazes de lê-lo.
Para alterar a senha do root no RHEL / CentOS 7, você precisa seguir este processo:
- Adicione
init=/bin/bash
ao final da linha de comando do kernel no grub, como fez anteriormente. - No prompt do bash, carregue a política do SELinux com
/usr/sbin/load_policy -i
. - Monte o sistema de arquivos raiz de leitura / gravação com
mount -o remount,rw /
. - Agora mude a senha e ela será bem-sucedida. %código%
- Remontar o sistema de arquivos readonly para confirmar as alterações e ter um sistema de arquivos limpo na próxima inicialização com
passwd root
. - Saia do shell ou reinicie o sistema com
mount -o remount,ro /
.
Agora você pode fazer login com a senha de root alterada.
Uma explicação mais detalhada deste procedimento está disponível na Red Hat (requer assinatura).