Si aún tiene un shell raíz, puede tener la oportunidad de reparar su sistema. Digamos que ha movido todos los directorios comunes ( /bin
, /etc
, /lib
, /sbin
, /usr
- estos son los que podrían hacer difícil recuperación) bajo /oops
.
No podrá ejecutar el mv
comando directamente, incluso si especifica la ruta completa /oops/bin/mv
. Eso es porque mv
está dinámicamente vinculado ; porque ha movido el /lib
directorio, mv
no se puede ejecutar porque no puede encontrar las bibliotecas que constituyen parte de su código. De hecho, es aún peor que eso: mv
no puedo encontrar el cargador dinámico /lib/ld-linux.so.2
(el nombre puede variar dependiendo de su arquitectura y variante de Unix, y el directorio podría ser un nombre diferente como /lib32
o /lib64
). Por lo tanto, hasta que haya movido el /lib
directorio hacia atrás, debe invocar el vinculador explícitamente y debe especificar la ruta a las bibliotecas movidas. Aquí está el comando probado en Debian squeeze i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Es posible que deba ajustar esto un poco para otras distribuciones o arquitecturas. Por ejemplo, para CentOS en x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Cuando has arruinado algo /lib
, es útil tener una caja de herramientas enlazada estáticamente. Algunas distribuciones (no sé acerca de CentOS) proporcionan una copia estáticamente vinculada de Busybox . También hay faja , un shell independiente con muchos comandos incorporados. Si tiene uno de estos, puede hacer su recuperación desde allí. Si no los ha instalado antes, es demasiado tarde.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Si ya no tiene un shell de raíz, pero aún tiene un demonio SSH escuchando y puede iniciar sesión directamente como root sobre ssh, y tiene una de estas cajas de herramientas vinculadas estáticamente, es posible que pueda ingresar. puede funcionar si te has mudado /lib
y /bin
, pero no /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Algunos administradores configuran una cuenta alternativa con un shell vinculado estáticamente, o hacen que la cuenta raíz use un shell vinculado estáticamente, solo para este tipo de problemas.
Si no tiene un shell raíz y no ha tomado precauciones, deberá arrancar desde un CD / USB en vivo de Linux (cualquiera funcionará siempre que sea lo suficientemente reciente como para poder acceder a sus discos y sistemas de archivos) y mover los archivos de vuelta.