Eu tenho um servidor CentOS 6.9.
O diretório completo /etc
estava sob controle de versão.
Eu acidentalmente executei 'git rm -R' nele. O servidor parou de funcionar imediatamente, minha sessão ssh foi perdida.
Consegui ter um console ip conectado ao servidor e inicializei a partir de usb com um live linux, executei o 'git reset --hard'
.
Agora o diretório index/working está limpo. Reiniciei o sistema, mas ainda não funciona. ele responde ao ping, mas ainda não consigo fazer ssh.
No console IP, não consigo nem fazer login, depois de digitar qualquer usuário e ele pede usuário novamente.
No Linux de recuperação, verifiquei os erros /var/log/boot.log
- o primeiro erro é relacionado ao iptables-restore
error while loading shared libraries libip4tc.so.0 : cannot open shared object file: No such file or directory
O próximo é com rsyslog.d
CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'
O arquivo está claramente lá se eu verificar na recuperação do Linux ao vivo. Suspeito de algum problema de permissão, mas não faço ideia.
Qualquer ajuda será apreciada. Obrigado.
Responder1
A propriedade e as permissões provavelmente estão erradas. Como você não os estava rastreando, terá que corrigi-los manualmente, para cada arquivo.
Por si só, o git não rastreia propriedade e permissões de arquivos. Não é para isso que serve. Esses metadados não foram rastreados e, portanto, foram perdidos.
É assim que os sistemas gostametckeepersão para. Eles envolvem o git para manter /etc
o controle de versão, ao mesmo tempo que mantêm os metadados que o git não mantém e os restauram, se necessário. Para evitar que isso aconteça no futuro, considere usar o etckeeper ou uma ferramenta semelhante.
Você também pode querer instituir algum tipo de backup. No momento, você não parece ter nenhum tipo de backup e esta é uma receita para o desastre. Você teve sorte de escapar com a menor perda de dados possível. Você pode não ter tanta sorte da próxima vez.
Responder2
Sim, você tem um problema de permissão e propriedade de arquivo. Infelizmentegit armazena apenas o conteúdo e o bit executável de um arquivo, portanto, as permissões de leitura/gravação, as propriedades de usuários e grupos e as ACLs, se houver, serão perdidas quando você restaurar do git reset --hard
. Isso é mais que suficiente para quebrar seu host quando o diretório que está sendo restaurado for /etc.
Sua melhor esperança de recuperação é um backup completo do sistema de arquivos, que incluirá todas as propriedades e permissões dos arquivos.
Se você não tiver um desses, você pode tentar reconstruir a propriedade e as permissões manualmente, comparando-as com um host CentOS semelhante. Mas pode acabar sendo menos trabalhoso reinstalar o sistema operacional do zero. Desculpe.