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 shell
comandos, no puedo ls
ningú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, cd
es uno de ellos y cuando trato de cd
hacerlo /etc
o /bin
errores no directory found
.
EDITAR Sólo se dio cuenta de todas las carpetas que faltan de /
( bin
, etc
, lib64
, root
, sbin
) nos trasladaron al /var
directorio, probé /var/bin/su
y sale:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
directamente?/var/bin/su: user root does not exist
Creo que determinamos que no se puede hacer porque / etc está en / var / etcRespuestas:
Si su sistema se ha
busybox
instalado, puede usar esto para volver a poner las cosas.busybox
es 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/tmp
que también existen como/var/tmp
, por lo que no puede simplemente moverlos. Con suerte, esos son los que semv
quejaron y se quedaron solos.Conseguir un shell de raíz
También mencionó que perdió su shell raíz, y eso le
su
está dando unld-linux
error de biblioteca. Es posible que pueda usar lo siguiente:Nota: Al intentar esto, no funciona. Esto se debe a que
su
requiere varios archivos en/etc
(passwd
,pam.d
y otros). Si/etc
aú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
su
osudo
escalar 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
/var
regreso a su hogar original/
.Sinopsis de lo sucedido
folder/*
se habría expandido a algo comofolder/foo
yfolder/bar
./*
se habría expandido a algo así/bin
/lib32
/lib64
/etc
/home
/root
/var
. Observando que/var
es el último artículo.Entonces, cuando el caparazón expandió todos esos globos, habría corrido algo como esto:
Como
/var
es el último elemento de la lista, todo se movió a él.¿Por qué
/var/bin/su
errores con/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Casi todos los binarios en Linux están vinculados dinámicamente
ld-linux
.ld-linux
es 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
busybox
Parece 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.2
lugar de/lib64/ld-linux-x86-64.so.2
? Esto parece ser lo que está matando los comandos en/var/bin
/etc
que no hay (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, y probablemente más). Parasu
trabajar,/etc
debe 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. Elmv
comando 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
mv
haber sido mi comando para mover todos los archivos y carpetas de la carpeta al directorio actual?/
y/var
pueden 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
mv
incorrectamente, no puede ejecutarshell
comandos y faltan carpetas en el directorio raíz (/
), en primer lugar, si tieneSU
, NO salgaSU
hasta 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
shell
cuando 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,
lvmdiskscan
6) Ran lvscan, mostró todos los listados como "inactivos"
lvscan
7) cargar el módulo del dispositivo
modprobe dm-mod
8) cambie los volúmenes que existen a activos
vgchange -ay
9)
lvscan
Volvió a funcionar , ahora todos los elementos enumerados como "activos"10) Creó el punto de montaje y montó la partición lógica
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Carpetas movidas hacia atrás (puede que necesite otras):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) ¡ÉXITO!
fuente