Jeśli nadal masz powłokę root, możesz mieć szansę naprawić swój system. Powiedzmy, że przeniósł wszystkich wspólnych katalogów ( /bin
, /etc
, /lib
, /sbin
, /usr
- są to te, które mogłyby spowodować odzyskanie trudną) pod /oops
.
Nie będziesz mógł wydać mv
polecenia bezpośrednio, nawet jeśli podasz pełną ścieżkę /oops/bin/mv
. To dlatego, że mv
jest dynamicznie powiązany ; ponieważ /lib
katalog został przeniesiony , mv
nie można go uruchomić, ponieważ nie można znaleźć bibliotek, które stanowią część jego kodu. W rzeczywistości jest nawet gorzej: mv
nie można znaleźć dynamicznego modułu ładującego /lib/ld-linux.so.2
(nazwa może się różnić w zależności od architektury i wariantu unix, a katalog może mieć inną nazwę, taką jak /lib32
lub /lib64
). Dlatego, dopóki nie przeniesiesz /lib
katalogu z powrotem, musisz jawnie wywołać konsolidator i określić ścieżkę do przeniesionych bibliotek. Oto polecenie przetestowane na ściśnięciu Debiana i386.
export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /
Może być konieczne dostosowanie tego nieco w przypadku innych dystrybucji lub architektur. Na przykład dla CentOS na x86_64:
export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /
Kiedy coś spieprzysz /lib
, pomoże Ci mieć statycznie połączony zestaw narzędzi. Niektóre dystrybucje (nie wiem o CentOS) zapewniają statycznie połączoną kopię Busybox . Jest też sash , samodzielna powłoka z wieloma wbudowanymi poleceniami. Jeśli masz jeden z nich, możesz odzyskać stamtąd. Jeśli nie zainstalowałeś ich wcześniej, jest za późno.
# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit
Jeśli nie masz już powłoki roota, ale nadal nasłuchujesz demona SSH i możesz zalogować się bezpośrednio jako root przez ssh, a masz jeden z tych statycznie połączonych zestawów narzędzi, możesz być w stanie ssh. może działać, jeśli zostały przeniesione /lib
i /bin
, ale nie /etc
.
ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /
Niektórzy administratorzy zakładają alternatywne konto ze statycznie połączoną powłoką lub zmuszają konto root do korzystania ze statycznie połączonej powłoki, tylko dla tego rodzaju problemów.
Jeśli nie masz root-a i nie podjąłeś żadnych środków ostrożności, będziesz musiał uruchomić system z Live CD / USB na Linuksa (każdy będzie działał tak długo, jak będzie wystarczająco nowy, aby mieć dostęp do twoich dysków i systemów plików) i przenieś pliki z powrotem.