System operacyjny to Centos 6.5 64-bit
Pobrałem plik tar i chciałem go rozpakować mv
.
Nie rozwiązałem problemu, a następnie przypadkowo (jako root) uruchomiłem mv folder/* /*
zamiast mv folder/* .
bash, powiedziałem, że nie może zastąpić niektórych plików, a następnie poprosiłem o pozwolenie na inne. Ctrl-c wyszedł.
Zostawiłem otwartą sesję terminalową, ale wyszedłem su
.
Teraz straciłem dostęp do większości shell
poleceń, nie mogę znaleźć ls
żadnych katalogów i nie mogę wrócić do su
.
Wydaje się, że serwer i usługi nadal działają. Mogę uruchamiać bardzo mało poleceń, cd
jest jednym z nich i kiedy próbuję to cd
zrobić, /etc
lub /bin
występuje błąd no directory found
.
EDIT Właśnie zauważyłem wszystkie foldery z brakujących /
( bin
, etc
, lib64
, root
, sbin
) został przeniesiony do /var
katalogu, próbowałem /var/bin/su
i otrzymujemy:
-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
/var/bin/su
bezpośrednio?/var/bin/su: user root does not exist
Myślę, że ustaliliśmy, że nie można tego zrobić, ponieważ / etc jest w / var / etcOdpowiedzi:
Jeśli Twój system został
busybox
zainstalowany, możesz użyć tego do przywrócenia rzeczy.busybox
to plik binarny z wieloma wbudowanymi narzędziami. Rzeczy takie jakmv
,sh
,ls
, itd.Z twojego komentarza do odpowiedzi Pavela wynika, że wszystko się skończyło
/var
. Możesz spróbować zrobić/var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. To powinno przywrócić większość systemu do działania. Istnieje kilka takich katalogów,/tmp
które również istnieją/var/tmp
, więc nie można ich po prostu przenosić. Mam nadzieję, żemv
to oni narzekali i zostali sami.Uzyskiwanie powłoki roota
Wspomniałeś również, że straciłeś powłokę główną, a to
su
powodujeld-linux
błąd biblioteki. Możesz być w stanie użyć następujących elementów:Uwaga: po próbie nie działa. To dlatego, że
su
wymaga kilku plików w/etc
(passwd
,pam.d
i inne). Gdyby/etc
nadal były nienaruszone, miałoby to spore szanse na sukces.Bez zajęty
Jeśli nie masz dostępnego busyboksa, możesz użyć tej samej sztuczki ld-linux jak dla
su
:Z płyty CD na żywo
Jak wspomniano w komentarzach, jeśli straciłeś powłokę root, to utknąłeś. Zasadniczo, aby to naprawić, potrzebujesz uprawnień roota. Jedynym sposobem, aby się tam dostać, jest posiadanie narzędzia, takiego jak
su
lubsudo
zwiększanie uprawnień (oba nie działają w tym momencie), lub przejęcie innego programu, który jest już uruchomiony jako root (w zależności od tego, co jest uruchomione, prawdopodobnie nie jest możliwe).To pozostawia jedyną opcję, jaką jest live CD. Po uruchomieniu na żywo CD (lub Live USB, lub cokolwiek innego), po prostu zamontuj wolumin główny i przenieś katalogi, których dotyczy problem, z
/var
powrotem do ich pierwotnego miejsca zamieszkania/
.Streszczenie tego, co się stało
folder/*
rozwinąłby się w coś takiego jakfolder/foo
ifolder/bar
./*
rozwinąłby się w coś takiego/bin
/lib32
/lib64
/etc
/home
/root
/var
. Zauważ, że/var
to ostatni element.Gdy więc powłoka rozszerzy wszystkie globusy, uruchomi się coś takiego:
Podobnie
/var
jak ostatni element na liście, wszystko zostało do niego przeniesione.Dlaczego
/var/bin/su
błędy z/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Prawie wszystkie pliki binarne w systemie Linux są dynamicznie powiązane
ld-linux
.ld-linux
jest biblioteką odpowiedzialną za ładowanie innych bibliotek wymaganych przez plik binarny. W twoim systemie to żyje/lib64/ld-linux-x86-64.so.2
. Ponieważ ten katalog został przeniesiony, żaden dynamicznie połączony plik wykonywalny przestanie działać.Powodem, dla którego busy jest aktywne, jest to, że zajęty jest statycznie powiązany. Nie używa
ld-linux
.źródło
busybox
brzmi jak idealne rozwiązanie, niestety nie zainstalowane, czy po tym zostanie naprawione ... czy w międzyczasie istnieje poprawna ścieżka dla poleceń do wykonania/var/lib64/ld-linux-x86-64.so.2
zamiast/lib64/ld-linux-x86-64.so.2
? Wydaje się, że to właśnie zabija polecenia/var/bin
/etc
których nie istnieją (/etc/passwd
,/etc/nsswitch
,/etc/pam.d
, i prawdopodobnie więcej). Abysu
działać,/etc
musi być z powrotem w oryginalnej lokalizacji. Chyba, że masz wokół siebie skorupę korzenia, myślę, że utknąłeś :-(mv folder/* ./*
też jest źle. Powinieneś bardziej uważać na semantykę uruchamianych poleceń.mv
Polecenia z więcej niż dwóch argumentów właśnie bierze wszystko argumentu oprócz ostatniego i przesuwa ścieżki wskazują one w katalogu określonym w ostatnim argumentem.Aby przenieść wszystkie katalogi (oprócz ukrytych) z folderu do bieżącego katalogu, należy użyć:
Zepsułeś działający system. Twoje powłoki i wbudowane polecenia nadal działają. Będziesz musiał uruchomić live CD i przenieść katalogi z powrotem. Nie znam wbudowanego basha do przenoszenia / zmiany nazw plików, który pozwoliłby ci naprawić sytuację bez ponownego uruchamiania, zobacz odpowiedź Patricka, aby uzyskać więcej szczegółów.
źródło
mv
polecenie, aby przenieść wszystkie pliki i foldery z folderu do bieżącego katalogu?/
i/var
katalogi mogą znajdować się na różnych partycjach, w takim przypadku musisz zamontować oba.Przypadkowo przeniosłem / usr do / usr_old i wszystko poszło do piekła. Na szczęście pozostałem w wierszu polecenia i mogłem wykonać następujące polecenie, aby przywrócić folder usr:
źródło
WAŻNE Jeśli jesteś tutaj i działałeś
mv
niepoprawnie, nie możesz uruchamiaćshell
poleceń, a folderów brakuje w katalogu głównym (/
), przede wszystkim, jeśli takSU
, NIE WYJDŹ,SU
dopóki nie zostanie naprawiony, ponieważ nie odzyskasz go. Jeśli jesteś zdalnie połączony, jeśli się rozłączysz, nie będziesz w staniessh
, zostaw serwer w spokoju, niereboot
- większość działających usług powinna być OK. Możesz wypróbować jedno z wielu rozwiązań zaproponowanych przez Patricka ... jednak prawdopodobnie będziesz potrzebować fizycznego dostępu, jeśli spieprzysz tak jak ja.Raz przed komputerem ponownie go uruchomiłem. Zgodnie z oczekiwaniami, dostałem panikę jądra.
Pomyślałem, że to całkiem łatwa poprawka, włóż Livecd, wejdź w tryb ratunkowy DO PUNKTU, BYŁO ŁATWE - wtedy musiałem spróbować zamontować katalog główny. Potrzebowałem jednak czegoś więcej niż zwykłego polecenia montowania.
Stało się tak, ponieważ podobnie jak wiele osób miałem system plików lvm i po raz pierwszy miałem do czynienia z ratunkiem takim jak ten. Musiałem przeszukać internet, aby zobaczyć, co muszę zrobić. Skonsolidowałem te informacje z tym postem. Oto mój proces rozwiązania problemu.
1) Wstawiono CD Centos_6.4_min
2) Interfejs GUI zapytał, co chcę zrobić, wybrałem Rescue
3) Rescue próbował zamontować obecny system, ale wskazał, że nie mam partycji Linuksa
4) Wybierz, aby podać,
shell
kiedy podano opcjęW tym momencie próbowałem wielu rzeczy, aby zamontować system, ale bez powodzenia, jestem prawie pewien, że są to wszystkie kroki, które musiałem podjąć (z powodu lvm):
5) Zeskanowałem moje tomy,
lvmdiskscan
6) Ran lvscan, pokazał wszystkie wymienione jako „nieaktywne”
lvscan
7) załaduj moduł urządzenia
modprobe dm-mod
8) zmień istniejące woluminy na aktywne
vgchange -ay
9) Uruchomiono
lvscan
ponownie, teraz wszystkie elementy wymienione jako „aktywne”10) Utworzono punkt montowania i zamontowano partycję logiczną
mkdir /mnt/root
mount /dev/VolGroup00/LogVol00 /mnt/root
11) Przeniesiono foldery z powrotem (możesz potrzebować innych):
mv /var/{bin,etc,lib64,mnt,root,sbin} /
12)
reboot
13) SUKCES!
źródło