El sistema operativo es Centos 6.5 de 64 bits
Descargué un archivo tar y quería descomprimirlo mv.
Me desligé, luego accidentalmente (como root) ejecuté en mv folder/* /*lugar de mv folder/* .bash, dije que no podía sobrescribir algunos archivos, luego pedí permiso para otros. Ctrl-c'd fuera.
He dejado abierta la sesión de terminal, pero he salido su.
Ahora he perdido el acceso a la mayoría de los shellcomandos, no puedo lsningún directorio y no puedo volver a su.
El servidor web y los servicios todavía parecen estar ejecutándose. Puedo ejecutar muy pocos comandos, cdes uno de ellos y cuando trato de cdhacerlo /etco /binerrores no directory found.
EDITAR Sólo se dio cuenta de todas las carpetas que faltan de /( bin, etc, lib64, root, sbin) nos trasladaron al /vardirectorio, probé /var/bin/suy sale:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

/var/bin/sudirectamente?/var/bin/su: user root does not existCreo que determinamos que no se puede hacer porque / etc está en / var / etcRespuestas:
Si su sistema se ha
busyboxinstalado, puede usar esto para volver a poner las cosas.busyboxes un binario con muchas utilidades estándar incorporadas. Las cosas tales comomv,sh,ls, etc.Por su comentario sobre la respuesta de Pavel, parece que todo terminó en
/var. Puedes intentar hacerlo/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /. Eso debería volver a poner en funcionamiento la mayor parte de su sistema. Hay algunos directorios como los/tmpque también existen como/var/tmp, por lo que no puede simplemente moverlos. Con suerte, esos son los que semvquejaron y se quedaron solos.Conseguir un shell de raíz
También mencionó que perdió su shell raíz, y eso le
suestá dando unld-linuxerror de biblioteca. Es posible que pueda usar lo siguiente:Nota: Al intentar esto, no funciona. Esto se debe a que
surequiere varios archivos en/etc(passwd,pam.dy otros). Si/etcaún estuviera intacto, esto tendría una buena posibilidad de tener éxito.Sin busybox
Si no tiene busybox disponible, es posible que pueda usar el mismo truco ld-linux que para
su:De un CD en vivo
Como se discutió en los comentarios, si ha perdido el shell raíz, está bastante atascado. Básicamente para solucionar esto, necesita privilegios de root. La única forma de llegar allí es tener una utilidad como
suosudoescalar sus permisos (ambos no son funcionales en este momento), o secuestrar otro programa que ya se está ejecutando como root (dependiendo de lo que se está ejecutando, no es posible).Esto deja la única opción de ser un CD en vivo. Una vez arrancado en un CD en vivo (o USB en vivo, o lo que sea), simplemente monte el volumen raíz y mueva los directorios afectados de
/varregreso a su hogar original/.Sinopsis de lo sucedido
folder/*se habría expandido a algo comofolder/fooyfolder/bar./*se habría expandido a algo así/bin/lib32/lib64/etc/home/root/var. Observando que/vares el último artículo.Entonces, cuando el caparazón expandió todos esos globos, habría corrido algo como esto:
Como
/vares el último elemento de la lista, todo se movió a él.¿Por qué
/var/bin/suerrores con/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directoryCasi todos los binarios en Linux están vinculados dinámicamente
ld-linux.ld-linuxes la biblioteca responsable de cargar las otras bibliotecas que necesita un binario. En su sistema esto vive en/lib64/ld-linux-x86-64.so.2. Como este directorio se movió, cualquier ejecutable vinculado dinámicamente ya no funcionará.La razón por la que busybox funciona es porque busybox está estáticamente vinculado. No utiliza
ld-linux.fuente
busyboxParece que la solución perfecta, desafortunadamente no está instalada, después de que esto se solucione ... Mientras tanto, ¿hay alguna forma de corregir la ruta para que los comandos se ejecuten en/var/lib64/ld-linux-x86-64.so.2lugar de/lib64/ld-linux-x86-64.so.2? Esto parece ser lo que está matando los comandos en/var/bin/etcque no hay (/etc/passwd,/etc/nsswitch,/etc/pam.d, y probablemente más). Parasutrabajar,/etcdebe estar de vuelta en su ubicación original. A menos que tenga una cáscara de raíz por ahí, creo que está atrapado :-(mv folder/* ./*Está mal también. Debe tener más cuidado con la semántica de los comandos que ejecuta. Elmvcomando con más de dos argumentos solo toma todos los argumentos excepto el último y mueve las rutas a las que apuntan al directorio especificado en el último argumento.Para mover todos los directorios (excepto los ocultos) de la carpeta al directorio actual, debe usar:
Has roto tu sistema en ejecución. Sus comandos de shell y de construcción continúan funcionando. Tendrá que iniciar un CD en vivo y mover los directorios hacia atrás. No conozco un bash incorporado para mover / cambiar el nombre de los archivos que le permitiría solucionar la situación sin reiniciar, consulte la respuesta de Patrick para obtener más detalles.
fuente
mvhaber sido mi comando para mover todos los archivos y carpetas de la carpeta al directorio actual?/y/varpueden estar en particiones diferentes, en cuyo caso debe montar ambos.Accidentalmente me mudé / usr a / usr_old y todo se fue al infierno. Afortunadamente, me quedé en el indicador y pude ejecutar el siguiente comando para restaurar la carpeta usr:
fuente
IMPORTANTE Si está aquí y se ha ejecutado
mvincorrectamente, no puede ejecutarshellcomandos y faltan carpetas en el directorio raíz (/), en primer lugar, si tieneSU, NO salgaSUhasta que se solucione, porque no lo recuperará. Si está conectado de forma remota, si se desconecta, no podrássh, deje el servidor solo, no lo hagareboot: la mayoría de los servicios en ejecución deberían estar bien. Puede intentar una de las muchas soluciones sugeridas por Patrick ... sin embargo, es probable que necesite acceso físico si cometió un error como lo hice yo.Una vez frente a la máquina, la reinicié. Como se esperaba, recibí un kernel panic.
Pensé que esto sería una solución bastante fácil, inserte livecd, ingrese al modo de rescate HASTA ESTE PUNTO FUE FÁCIL, luego tuve que intentar montar mi directorio raíz. Sin embargo, necesitaba más que un simple comando de montaje.
Esto se debió a que, como muchas personas, tenía un sistema de archivos lvm, y esta fue la primera vez que tuve que lidiar con un rescate como este. Tuve que buscar en la web para ver lo que necesitaba hacer. He consolidado esa información en esta publicación. Aquí estaba mi proceso para solucionar mi problema.
1) insertado Centos_6.4_min cd
2) La interfaz GUI me preguntó qué quería hacer, elegí Rescue
3) Rescue intentó montar el sistema actual, pero indicó que no tenía particiones de Linux
4) Elija ingresar
shellcuando se le dio la opciónEn este punto intenté muchas cosas para montar el sistema, sin suerte, estoy bastante seguro de que estos son todos los pasos que tuve que seguir (debido a lvm):
5) Escaneé mis volúmenes,
lvmdiskscan6) Ran lvscan, mostró todos los listados como "inactivos"
lvscan7) cargar el módulo del dispositivo
modprobe dm-mod8) cambie los volúmenes que existen a activos
vgchange -ay9)
lvscanVolvió a funcionar , ahora todos los elementos enumerados como "activos"10) Creó el punto de montaje y montó la partición lógica
mkdir /mnt/rootmount /dev/VolGroup00/LogVol00 /mnt/root11) Carpetas movidas hacia atrás (puede que necesite otras):
mv /var/{bin,etc,lib64,mnt,root,sbin} /12)
reboot13) ¡ÉXITO!
fuente