Tengo un servidor CentOS 6.9.
El directorio completo /etc
estaba bajo control de versiones.
Accidentalmente ejecuté 'git rm -R' en él. El servidor dejó de funcionar de inmediato y mi sesión ssh se perdió.
Logré tener una consola ip conectada al servidor, y arranqué desde usb con un live linux, ejecuté 'git reset --hard'
.
Ahora el índice/directorio de trabajo está limpio. Reinicié el sistema, pero todavía no funciona. Responde al ping pero todavía no puedo acceder a él.
En la consola IP, ni siquiera puedo iniciar sesión, después de ingresar cualquier usuario y me pregunta por el usuario nuevamente.
Desde la recuperación de Linux, verifiqué los errores /var/log/boot.log
: el primer error está relacionado con iptables-restore
error while loading shared libraries libip4tc.so.0 : cannot open shared object file: No such file or directory
El siguiente es con rsyslog.d
CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'
El archivo está claramente ahí si lo verifico desde la recuperación de Linux en vivo. Sospecho que hay algún problema con los permisos, pero realmente no tengo idea.
Cualquier ayuda se agradece. Gracias.
Respuesta1
La propiedad y los permisos probablemente sean incorrectos. Como no los estabas rastreando, tendrás que corregirlos manualmente para cada archivo.
Por sí solo, git no rastrea la propiedad ni los permisos de los archivos. No es para eso. Estos metadatos no fueron rastreados en absoluto y, por lo tanto, se perdieron.
Así es como les gustan los sistemasetc guardiánson para. Se ajustan a git para mantener /etc
el control de versiones, al mismo tiempo que mantienen los metadatos que git no tiene y los restauran si es necesario. Para evitar que esto suceda en el futuro, considere utilizar etckeeper o una herramienta similar.
Es posible que también desees realizar algún tipo de copia de seguridad. Actualmente no parece tener ningún tipo de copia de seguridad y esta es una receta para el desastre. Ha tenido suerte de escapar con la menor pérdida de datos. Puede que la próxima vez no tengas tanta suerte.
Respuesta2
Sí, tienes un problema de permisos y propiedad de archivos. Desafortunadamentegit solo almacena el contenido y el bit ejecutable de un archivo, por lo que los permisos de lectura/escritura, las propiedades de usuarios y grupos y las ACL, si las hubiera, se pierden al restaurar desde git reset --hard
. Eso es más que suficiente para dañar su host cuando el directorio que se está restaurando es /etc.
Su mejor esperanza de recuperación es realizar una copia de seguridad completa del sistema de archivos, que incluirá todas las propiedades y permisos de los archivos.
Si no tiene uno de esos, puede intentar reconstruir la propiedad y los permisos manualmente comparándolos con un host CentOS similar. Pero podría resultar menos complicado reinstalar el sistema operativo desde cero. Lo siento.