Se hai ancora una shell di root, potresti avere la possibilità di riparare il tuo sistema. Diciamo che è stato spostato tutte le directory comuni ( /bin
, /etc
, /lib
, /sbin
, /usr
- questi sono quelli che potrebbero rendere difficile il recupero) sotto /oops
.
Non sarà possibile emettere mv
direttamente il comando, anche se si specifica il percorso completo /oops/bin/mv
. Questo perché mv
è collegato dinamicamente ; perché hai spostato la /lib
directory, mv
non può essere eseguito perché non trova le librerie che fanno parte del suo codice. In effetti, è anche peggio di così: mv
impossibile trovare il caricatore dinamico /lib/ld-linux.so.2
(il nome può variare a seconda dell'architettura e della variante di Unix e la directory potrebbe essere un nome diverso come /lib32
o /lib64
). Pertanto, fino a quando non hai spostato /lib
indietro la directory, devi richiamare esplicitamente il linker e devi specificare il percorso delle librerie spostate. Ecco il comando testato su Debian squeeze i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Potrebbe essere necessario modificarlo leggermente per altre distribuzioni o architetture. Ad esempio, per CentOS su x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Quando hai rovinato qualcosa /lib
, è utile avere una cassetta degli attrezzi collegata staticamente. Alcune distribuzioni (non conosco CentOS) forniscono una copia staticamente collegata di Busybox . C'è anche sash , una shell standalone con molti comandi integrati. Se ne hai uno, puoi fare il tuo recupero da lì. Se non li hai installati prima del fatto, è troppo tardi.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Se non hai più una shell root, ma hai ancora un demone SSH in ascolto e puoi accedere direttamente come root su ssh e hai una di queste caselle degli strumenti collegate staticamente, potresti essere in grado di accedere. può funzionare se ti sei spostato /lib
e /bin
, ma non /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Alcuni amministratori configurano un account alternativo con una shell collegata staticamente o fanno in modo che l'account root utilizzi una shell collegata staticamente, proprio per questo tipo di problema.
Se non si dispone di una shell di root e non si sono prese precauzioni, è necessario eseguire l'avvio da un CD / USB live di Linux (tutti lo faranno finché è abbastanza recente da poter accedere a dischi e file system) e sposta i file indietro.